{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBRegressor as XGBR # XGBRegressor是xgboost库提供的sklearn接口，以帮助熟悉sklearn的用户直接使用；但要注意xgboost的诸多工程优化手段在sklearnAPI中没有实现。\n",
    "from sklearn.ensemble import RandomForestRegressor as RFR\n",
    "from sklearn.linear_model import LinearRegression as LinearR\n",
    "from sklearn.datasets import fetch_california_housing\n",
    "from sklearn.datasets import fetch_openml\n",
    "from sklearn.model_selection import KFold, cross_val_score as CVS, train_test_split as TTS\n",
    "from sklearn.metrics import mean_squared_error as MSE\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from time import time\n",
    "import datetime"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 首先尝试使用sklearnAPI:XGBRegressor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 下载可能需要梯子\n",
    "data = fetch_california_housing() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# data = fetch_openml(name=\"house_prices\", as_frame=True) # 这个数据集包含类变量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(20640, 8)\n",
      "(20640,)\n"
     ]
    }
   ],
   "source": [
    "print(data.data.shape)\n",
    "print(data.target.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'numpy.ndarray'>\n",
      "<class 'numpy.ndarray'>\n"
     ]
    }
   ],
   "source": [
    "X = data.data\n",
    "y = data.target\n",
    "print(type(X))\n",
    "print(type(y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain,Xtest,Ytrain,Ytest = TTS(X,y,test_size=0.3,random_state=420)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "reg = XGBR(n_estimators=100).fit(Xtrain,Ytrain) #训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(6192,)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predictions = reg.predict(Xtest) # 执行预测\n",
    "predictions.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$R^2 = 1 - \\frac{\\sum{(y-\\hat y)^2}}{\\sum(y-\\bar y)^2}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8298126021007517"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg.score(Xtest,Ytest) #默认评估指标是R^2;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.068558169089147\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.22837493999029823"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 看一下MSE指标\n",
    "print(y.mean())\n",
    "MSE(Ytest,reg.predict(Xtest))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.44369304, 0.08339646, 0.04757189, 0.02729308, 0.02219348,\n",
       "       0.15586828, 0.09983681, 0.12014695], dtype=float32)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg.feature_importances_ # 树模型的优势之一：能够查看模型的重要性分数，xgboost可以使用SelectFromModel进行特征选择；重要性分数是统计分裂增益得到的。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.82108923772097"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg = XGBR(n_estimators=100) #新建立没有经过训练的模型\n",
    "CVS(reg,Xtrain,Ytrain,cv=5).mean() # 仅在训练集上的交叉验证，默认指标仍然是R平方"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['accuracy',\n",
       " 'adjusted_mutual_info_score',\n",
       " 'adjusted_rand_score',\n",
       " 'average_precision',\n",
       " 'balanced_accuracy',\n",
       " 'completeness_score',\n",
       " 'explained_variance',\n",
       " 'f1',\n",
       " 'f1_macro',\n",
       " 'f1_micro',\n",
       " 'f1_samples',\n",
       " 'f1_weighted',\n",
       " 'fowlkes_mallows_score',\n",
       " 'homogeneity_score',\n",
       " 'jaccard',\n",
       " 'jaccard_macro',\n",
       " 'jaccard_micro',\n",
       " 'jaccard_samples',\n",
       " 'jaccard_weighted',\n",
       " 'matthews_corrcoef',\n",
       " 'max_error',\n",
       " 'mutual_info_score',\n",
       " 'neg_brier_score',\n",
       " 'neg_log_loss',\n",
       " 'neg_mean_absolute_error',\n",
       " 'neg_mean_absolute_percentage_error',\n",
       " 'neg_mean_gamma_deviance',\n",
       " 'neg_mean_poisson_deviance',\n",
       " 'neg_mean_squared_error',\n",
       " 'neg_mean_squared_log_error',\n",
       " 'neg_median_absolute_error',\n",
       " 'neg_negative_likelihood_ratio',\n",
       " 'neg_root_mean_squared_error',\n",
       " 'normalized_mutual_info_score',\n",
       " 'positive_likelihood_ratio',\n",
       " 'precision',\n",
       " 'precision_macro',\n",
       " 'precision_micro',\n",
       " 'precision_samples',\n",
       " 'precision_weighted',\n",
       " 'r2',\n",
       " 'rand_score',\n",
       " 'recall',\n",
       " 'recall_macro',\n",
       " 'recall_micro',\n",
       " 'recall_samples',\n",
       " 'recall_weighted',\n",
       " 'roc_auc',\n",
       " 'roc_auc_ovo',\n",
       " 'roc_auc_ovo_weighted',\n",
       " 'roc_auc_ovr',\n",
       " 'roc_auc_ovr_weighted',\n",
       " 'top_k_accuracy',\n",
       " 'v_measure_score']"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看sklearn中所有预设的模型评估指标\n",
    "import sklearn\n",
    "sorted(sklearn.metrics.SCORERS.keys())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7977083465181097"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用随机森林和线性回归进行对比\n",
    "rfr = RFR(n_estimators=100)\n",
    "CVS(rfr,Xtrain,Ytrain,cv=5).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.2691503279123632"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "CVS(rfr,Xtrain,Ytrain,cv=5,scoring='neg_mean_squared_error').mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6044172522670997"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr = LinearR()\n",
    "CVS(lr,Xtrain,Ytrain,cv=5).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.5248837357845153"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "CVS(lr,Xtrain,Ytrain,cv=5,scoring='neg_mean_squared_error').mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.29721949913504875"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# verbosity：训练中是否打印每次训练的结果\n",
    "reg = XGBR(n_estimators=10, verbosity=0) # verbosity=3 则打印训练过程; 默认为0不打印\n",
    "CVS(reg,Xtrain,Ytrain,cv=5, scoring='neg_mean_squared_error').mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_learning_curve(estimator,title, X, y, \n",
    "                        ax=None, #选择子图\n",
    "                        ylim=None, #设置纵坐标的取值范围\n",
    "                        cv=None, #交叉验证\n",
    "                        n_jobs=None #设定所要使用的线程\n",
    "                       ):\n",
    "    \n",
    "    from sklearn.model_selection import learning_curve\n",
    "    \n",
    "    train_sizes, train_scores, test_scores = learning_curve(estimator, X, y\n",
    "                                                            ,shuffle=True\n",
    "                                                            ,cv=cv\n",
    "                                                            ,random_state=420\n",
    "                                                            ,n_jobs=n_jobs) \n",
    "    print(train_sizes.shape)\n",
    "    print(train_scores.shape)\n",
    "    print(test_scores.shape)\n",
    "    if ax == None:\n",
    "        ax = plt.gca()\n",
    "    else:\n",
    "        ax = plt.figure()\n",
    "    ax.set_title(title)\n",
    "    if ylim is not None:\n",
    "        ax.set_ylim(*ylim)\n",
    "    ax.set_xlabel(\"Training examples\")\n",
    "    ax.set_ylabel(\"Score\")\n",
    "    ax.grid() #绘制网格，不是必须\n",
    "    ax.plot(train_sizes, np.mean(train_scores, axis=1), 'o-'\n",
    "            , color=\"r\",label=\"Training score\")\n",
    "    ax.plot(train_sizes, np.mean(test_scores, axis=1), 'o-'\n",
    "            , color=\"g\",label=\"Test score\")\n",
    "    ax.legend(loc=\"best\")\n",
    "    return ax"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "cv = KFold(n_splits=5, shuffle = True, random_state=42) #交叉验证模式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(5,)\n",
      "(5, 5)\n",
      "(5, 5)\n"
     ]
    },
    {
     "data": {
      "image/png": "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n376Cdu2bUPXrl0hkUjU+1u3bo1r165VWuWIiIiIqrsKjUzdu3cPjRo10tr/6NEjjXBFREREVNtVKEx16tQJv//+u/p1YYD67LPP0K1bt8qpGREREVENUKHLfCtWrED//v1x8eJFFBQUIDw8HBcuXMCRI0dw4MCByq4jERERUbVVoZGp7t27Izo6GtnZ2WjWrBn27t0LJycnHDlyBB06dKjsOhIRERFVW+UemZLL5ZgyZQoWLFiAr7/+2hB1IiIiIqoxyj0yJZPJsGvXLkPUhYiIiKjGqdBlvhEjRuCnn36q5KoQERER1TwVmoDevHlzvP/++4iOjkaHDh1gbW2t8f7MmTMrpXJERERE1V2FwtTnn3+OevXq4eTJkzh58qTGexKJhGGKiIiI6owKhan4+PjKrgcRERFRjVShOVNFCSEghKiMuhARERHVOBUOU9988w38/PxgaWkJS0tLtG3bFt9++21l1o2IiIio2qvQZb41a9ZgwYIFmD59Onr06AEhBP755x9MnToVqampmD17dmXXk4iIiKhaqlCY+vjjj7Fp0yaMGzdOvW/YsGFo06YNFi1axDBFREREdUaFLvMlJSWhe/fuWvu7d++OpKQkvStFREREVFNUKEw1b94c27dv19q/bds2tGjRQu9KEREREdUUFbrMt3jxYowZMwYHDx5Ejx49IJFIcPjwYfz55586QxYRERFRbVWhkan/+7//w9GjR+Ho6IiffvoJERERcHR0xLFjxzBixIjKriMRERFRtVWhkSkA6NChA7777rvKrAsRERFRjVOhkanIyEjs2bNHa/+ePXvwxx9/6F0pIiIiopqiQmHq7bffhkKh0NovhMDbb7+td6WIiIiIaooKhamrV6+idevWWvu9vb0RFxend6WIiIiIaooKhSl7e3tcv35da39cXBysra31rhQRERFRTVGhMDV06FDMmjUL165dU++Li4vDnDlzMHTo0EqrHBEREVF1V6EwtWrVKlhbW8Pb2xteXl7w8vKCt7c3GjRogI8++qiy60hERERUbVVoaQR7e3tER0cjKioKZ86cgaWlJdq1awd/f//Krh8RERFRtVaukamjR4+qlz6QSCQICAhAo0aN8NFHH+H//u//MGXKFOTl5RmkokRERETVUbnC1KJFi3D27Fn163PnzmHy5Mno168f3n77bfz6669YsWJFpVeS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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_learning_curve(XGBR(n_estimators=100,random_state=420)\n",
    "                    ,\"XGB\",Xtrain,Ytrain,ax=None,cv=cv)\n",
    "plt.show()\n",
    "# 训练分数和验证分数有明显差距，通常这种情况可以通过调参获取更佳的结果"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以下尝试调整基树的个数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "cv = 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "310 0.8241728758557703\n"
     ]
    },
    {
     "data": {
      "image/png": "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QUl19Y55nwAAAABsk4ooSqqrqzNs2LA888wz+e///u+i43Q7ffv2zV577ZVevXoVHQVgyzZsKF/KalvKj+efL68P0hb9+m17+TFwYHmmCAAAAADdQkUUJUnSv3//7L///tnQ1sVwK1x1dXV69+5tFg7Q+das2baFzp97Lnnhhba//q67vvk6H833+/Xr+PcHAAAAQJdQMUVJUv7Sv9olTgCKUSoljY3bttbHc88lq1a17fV79Sqv97Et5cfuuycuJwgAAABAKqwoAaCDbdpUns2xreXHunVte/2amjdf5Lx52203630AAAAA0GaKEgBa27Dh1WLjzS599fzzSVNT216/f/83X+ejeTxggPU+AAAAANihFCUAlWD16m1b6+O555IXX2z76++227aVH3vskfTt2/HvDwAAAADaSVEC0JM891yyaFHy0EPl28ceS5YtS155pW2vU11dLjXebJHz5vU+dtppx7wfAAAAANjBFCUA3dXzz5fLkOZi5KGHkmee2frxffq8+Tofzfd32628ODoAAAAA9HCKEoDu4O9/b12ILFqU/O1vmx9XVZUccEAyenQyalTy7ncnb31rufzYZRfrfQAAAADA6yhKALqaF19Mfve7VwuRhx5Knn56y8e+/e2vliKjRyfveU+5EAEAAAAAtomiBKBIK1eWS5HXzhZ58sktH7vffq8WIs2lSF1d5+YFAAAAgB5GUQLQWVat2rwU+etft3zsiBGvFiKjRiWHHprsumvn5gUAAACACtCulXrnzJmTESNGpE+fPhk1alTuvffeNzx+/vz5OeSQQ9K3b9/sueeeOe200/LCCy+0PH711VfniCOOyK677ppdd901Rx99dB544IH2RAPoGl5+ObnvvuQ730n+8R+TAw8sz/744AeT885LfvjDV0uSvfdOPvnJ5BvfSO66K1mxInnqqeRHP0r++Z+TD39YSQIAAAAAO0ibZ5QsWLAgM2bMyJw5c3L44Yfnu9/9biZMmJDHH388e+2112bH33fffTn55JPz7W9/OxMnTszSpUszderUnH766bnllluSJHfffXdOOumkjBs3Ln369Mlll12W8ePH57HHHstb3/rW7X+XADvS6tXJI4+0XlPkT39KSqXNjx0+vPWaIqNGJYMGdXpkAAAAAKCsqlTa0jd5WzdmzJgceuihmTt3bsu+Aw88MMcff3xmzpy52fGXX3555s6dmydfc839WbNm5bLLLsuSJUu2+DOampqy6667Zvbs2Tn55JO3KVdjY2Pq6uqycuXKDBgwoC1vCWDbrVmT/P73rS+f9fjjyaZNmx/71re2XlNk1Khkjz06PzMAAAAAVKBt7Q3aNKNk/fr1WbRoUc4///xW+8ePH5/7779/i88ZN25cLrzwwtx+++2ZMGFCli9fnp/85Cc59thjt/pzVq9enQ0bNmS33Xbb6jHr1q3LunXrWu43Nja25a0AvLm1a5M//OHVUmTRouSPf0yamjY/dsiQ1oXIqFHJnnt2fmYAAAAAoE3aVJSsWLEiTU1NGTx4cKv9gwcPzrJly7b4nHHjxmX+/PmZNGlS1q5dm40bN+bjH/94Zs2atdWfc/755+etb31rjj766K0eM3PmzHz9619vS3yArVu/Pnn00daXz3r00WTjxs2P3WOP1pfPGj06GTq08zMDAAAAANutzWuUJElVVVWr+6VSabN9zR5//PGcc845+cpXvpJjjjkmDQ0N+dKXvpSpU6fmmmuu2ez4yy67LD/84Q9z9913p0+fPlvNcMEFF+Tcc89tud/Y2Jjhw4e35+0AlWbDhvLMkNeXIuvXb37soEGbrykybFiylc88AAAAAKB7aVNRMmjQoFRXV282e2T58uWbzTJpNnPmzBx++OH50pe+lCQ5+OCD069fvxxxxBG55JJLsudrLk1z+eWX5xvf+EZ+8Ytf5OCDD37DLLW1tamtrW1LfKASbdhQXkPktWuK/OEPyWsu3ddit902X1Nkr72UIgAAAADQg7WpKKmpqcmoUaOycOHCfOITn2jZv3Dhwhx33HFbfM7q1avTu3frH1NdXZ2kPBOl2b//+7/nkksuyc9//vOMHj26LbEAyjZuTP7rv14tRBYtSh55pLzWyOvV1bUuREaPTt72NqUIAAAAAFSYNl9669xzz83kyZMzevTojB07NvPmzcvixYszderUJOVLYi1dujQ33HBDkmTixIk544wzMnfu3JZLb82YMSOHHXZYhv7PNf0vu+yyfPnLX84PfvCDvO1tb2uZsdK/f//079+/o94r0JM0NSV//nPry2c9/HCyZs3mxw4Y8OoC683lyD77KEUAAAAAgLYXJZMmTcoLL7yQiy++OA0NDRk5cmRuv/327L333kmShoaGLF68uOX4U089NatWrcrs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nDkZMWJE+vTpk1GjRuXee+99w+Pnz5+fQw45JH379s2ee+6Z0047LS+88ELL44899lg++clP5m1ve1uqqqryne98pz2xoHtavjy56abyePr0YrMAAAAAAFSYNhclCxYsyIwZM3LhhRfm4YcfzhFHHJEJEyZk8eLFWzz+vvvuy8knn5wpU6bksccey49//OM8+OCDOf01lxdavXp19tlnn3zzm9/MkCFD2v9uoDv63veS9euTww5L3vveotMAAAAAAFSUNhcl3/rWtzJlypScfvrpOfDAA/Od73wnw4cPz9y5c7d4/G9+85u87W1vyznnnJMRI0bk/e9/f84888w89NBDLce8973vzb//+7/nxBNPTG1tbfvfDXQ3GzcmzedOfX2xWQAAAAAAKlCbipL169dn0aJFGT9+fKv948ePz/3337/F54wbNy7PPPNMbr/99pRKpTz33HP5yU9+kmOPPbb9qZOsW7cujY2NrTbodm67LXnmmWT33ZPPfKboNAAAAAAAFadNRcmKFSvS1NSUwYMHt9o/ePDgLFu2bIvPGTduXObPn59JkyalpqYmQ4YMycCBAzNr1qz2p04yc+bM1NXVtWzDhw/frteDQsyeXb79whcSs6kAAAAAADpduxZzr6qqanW/VCpttq/Z448/nnPOOSdf+cpXsmjRotx55515+umnM3Xq1Pb86BYXXHBBVq5c2bItWbJku14POt0f/5jcfXdSXZ1s5/kAAAAAAED79G7LwYMGDUp1dfVms0eWL1++2SyTZjNnzszhhx+eL33pS0mSgw8+OP369csRRxyRSy65JHvuuWe7gtfW1lrPhO6teTbJJz6RDBtWbBYAAAAAgArVphklNTU1GTVqVBYuXNhq/8KFCzNu3LgtPmf16tXp1av1j6murk5SnokCFemll5Lvf788tog7AAAAAEBh2jSjJEnOPffcTJ48OaNHj87YsWMzb968LF68uOVSWhdccEGWLl2aG264IUkyceLEnHHGGZk7d26OOeaYNDQ0ZMaMGTnssMMydOjQJOVF4h9//PGW8dKlS/PII4+kf//+2W+//TrqvULXcf31yerVyciRyQc+UHQaAAAAAICK1eaiZNKkSXnhhRdy8cUXp6GhISNHjsztt9+evffeO0nS0NCQxYsXtxx/6qmnZtWqVZk9e3bOO++8DBw4MEcddVQuvfTS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TUaNGpWFCxe22r9w4cKMGzeuoFTAjjZixIgMGTKk1bm/fv363HPPPS3n/qhRo7LTTju1OqahoSF//OMffT5AF1cqlVJfX5+f/vSn+X//7/9lxIgRrR73GQCVpVQqZd26dc596OE+/OEP59FHH80jjzzSso0ePTqf+9zn8sgjj2SfffbxGQAVYt26dfnTn/6UPffc05//0E259FYBzj333EyePDmjR4/O2LFjM2/evCxevDhTp04tOhqwHV5++eU88cQTLfeffvrpPPLII9ltt92y1157ZcaMGfnGN76R/fffP/vvv3++8Y1vpG/fvvnsZz+bJKmrq8uUKVNy3nnn5S1veUt22223/NM//VMOOuigzRaGBLqWadOm5Qc/+EFuu+227LLLLi3/eqyuri4777xzqqqqfAZAD/Wv//qvmTBhQoYPH55Vq1blpptuyt13350777zTuQ893C677NKyHlmzfv365S1veUvLfp8B0DP90z/9UyZOnJi99tory5cvzyWXXJLGxsaccsop/vyHbkpRUoBJkyblhRdeyMUXX5yGhoaMHDkyt99+e/bee++iowHb4aGHHsqHPvShlvvnnntukuSUU07J9ddfn3/+53/OmjVrcvbZZ+fFF1/MmDFjctddd2WXXXZpec63v/3t9O7dO5/5zGeyZs2afPjDH87111+f6urqTn8/wLabO3dukuSDH/xgq/3XXXddTj311CTxGQA91HPPPZfJkyenoaEhdXV1Ofjgg3PnnXfmIx/5SBLnPlQ6nwHQMz3zzDM56aSTsmLFiuy+++553/vel9/85jct3+0596H7qSqVSqWiQwAAAAAAABTBGiUAAAAAAEDFUpQAAAAAAAAVS1ECAAAAAABULEUJAAAAAABQsRQlAAAAAABAxVKUAAAAAAAAFUtRAgAAAAAAVCxFCQAAAAAAULEUJQAAAAAAQMVSlAAAAAAAABVLUQIAAAAAAFSs/x8qnHNmczZ94AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#=====【TIME WARNING：4 minutes】=====#\n",
    "\n",
    "axisx = range(10,610,50)\n",
    "scores = []\n",
    "for i in axisx:\n",
    "    reg = XGBR(n_estimators=i, random_state=55)\n",
    "    scores.append(CVS(reg, Xtrain, Ytrain, cv=cv).mean())\n",
    "    \n",
    "print(axisx[scores.index(max(scores))], max(scores))\n",
    "\n",
    "plt.figure(figsize=(20,5))\n",
    "plt.plot(axisx, scores, c=\"red\", label=\"XGB\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\\text { Error }= bias^2+var+\\xi$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "300 0.8241941982779452 1.0100228342929029e-05\n",
      "600 0.8236781701030405 9.786586384320507e-06\n",
      "300 0.8241941982779452 1.0100228342929029e-05 0.030917780147477394\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#======【TIME WARNING: 3 minutes】=======#\n",
    "axisx = range(50,650,50)\n",
    "scores = [] # 1 - score可以表示偏差\n",
    "var = [] # 方差\n",
    "ge = [] # 泛化误差-噪声\n",
    "for i in axisx:\n",
    "    reg = XGBR(n_estimators=i, random_state=420)\n",
    "    cvresult = CVS(reg, Xtrain, Ytrain, cv=cv)\n",
    "    #记录 1-偏差\n",
    "    scores.append(cvresult.mean())\n",
    "    #记录方差，估算\n",
    "    var.append(cvresult.var())\n",
    "    #计算泛化误差的可控部分\n",
    "    ge.append((1 - cvresult.mean())**2 + cvresult.var())\n",
    "    \n",
    "#打印R平方最高所对应的n_estimators，并打印对应的方差\n",
    "print(axisx[scores.index(max(scores))], max(scores), var[scores.index(max(scores))])\n",
    "\n",
    "#打印方差最低时对应的n_estimators，并打印对应的R2\n",
    "print(axisx[var.index(min(var))], scores[var.index(min(var))], min(var))\n",
    "\n",
    "#打印泛化误差可控部分最低对应的n_estimators，并打印对应的R2，方差以及泛化误差的可控部分的值\n",
    "print(axisx[ge.index(min(ge))], scores[ge.index(min(ge))], var[ge.index(min(ge))], min(ge))\n",
    "\n",
    "plt.figure(figsize=(20,5))\n",
    "plt.plot(axisx,scores,c=\"red\",label=\"XGB\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "# 注意到在该数据集上，方差非常的小\n",
    "# 另一方面，根据奥卡姆剃刀原则，在性能差不多时，应该尽量选择简单的模型，所以虽然这里给出的最佳n_estimators=300，但可以选择更低的值；\n",
    "# 可以继续进行更细化的选取，比如在range(50,300,10)内选取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#看看泛化误差的可控部分如何变化\n",
    "plt.figure(figsize=(20,5))\n",
    "plt.plot(axisx, ge , c=\"gray\", linestyle='-.')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8245643818982812\n",
      "0.2982795238494873\n"
     ]
    }
   ],
   "source": [
    "#验证模型在测试集上的效果\n",
    "time0 = time()\n",
    "print(XGBR(n_estimators=50, random_state=420).fit(Xtrain,Ytrain).score(Xtest,Ytest))\n",
    "print(time()-time0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8339380068142502\n",
      "1.6132402420043945\n"
     ]
    }
   ],
   "source": [
    "time0 = time()\n",
    "print(XGBR(n_estimators=300, random_state=420).fit(Xtrain,Ytrain).score(Xtest,Ytest))\n",
    "print(time()-time0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "subsample：指bootstrap sampling策略的抽样比例；具体地，是在每次建树时执行一次bootstrap sampling\\\n",
    "接下来尝试调整subsample参数；类似地，也可以根据之前介绍的可控泛化误差来选取。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9473684210526315 0.8199842133852477\n"
     ]
    },
    {
     "data": {
      "image/png": "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gpVLQ0NDrr766txxxx254oor8qEPfSi/+tWvUigUcsABB+T3v/99Nm7cmAEDBiRJRo0alVGjRmXZsmVbHauqqir7779/x+vDDjssd911V7761a8KYQB2M+03qze1bUprsXXzc1vrdl/v6L2eet3pbbvxGa/9uf25rdi2zYBiW+/RP7Tf9H3tOss7W7v51TfQXn3DbFs/d3afbW3XnX26VU965jiv/f5eu4719r7nbW23u27z6u8SAADom4Qw/dT69evzwQ9+MB/5yEdy0kkn5cADD8zUqVPzrW99K+edd17e//7357rrrss3vvGN/PM//3O3PqO6ujrr16/v4coBuq89PNjejfPOPL/6pn/Zj9HDNXQl8KBnvfovt6urqlNdqN7qeUfvvfovvXf5vU5+5rbee/VfnXfnJnNP3KjuzE36nj6Gm+AAAABsjxCmn/r0pz+dtra2fPWrX02SvP71r89VV12VOXPm5K1vfWvq6+vziU98Ip/4xCfy5JNP5t3vfnfq6uqyYsWKfPe7391846GqquN4xWIxK1euTLI54Jk7d25++ctfbtFDBui/isViWlpbsn7T+ry06aW8tOmlrN+4+edtjb16fJtjndinpbVlm+EDpVVIITVVNamuqt78XKjusdfbfa83PqOEoUf7DX0AAABg9yOE6Yd++9vf5utf/3ruvvvuDB36ytJp5557bm666aaOZcmuvPLKTJ8+PTfccENuvPHGrFu3LuPGjcub3vSmNDQ0ZMSIER37Njc3Z8KECUmS2traTJ48OV/84hfzqU99qtfPD9i+1rbWTgchOw06urDPS5teqogeC4UUdjjT4NXP27sx39nn9hv8W723q/t3s4aeCjOECQAAAACvKBQ7272un2pubs7IkSPT1NS0ReiQJC+99FKWLFmSffbZJ4MGDSpThZXL9webtba15sWNL+bFlhc79bx+4/ouByHtY5vaNpX7dFNIIYNqBmXwgMGbn2s2P2937OWf29/r1D4DBmdg9cAuBxgCBAAAAAB2Zke5wWuZCQPQCRtbN3YpKOl43s57a1vWdvy8oXVDWc5pQNWALgchXQpPtjM2oGqAsAMAAACAfkEIA+w2Wlpbtgo81ras7XZQ8urnltaWktdfSCFDBw7N0AFDt/88YGiGDBjS5SDktTNKaqtrU11VXfJzAgAAAID+TAgDlE1rW2ue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IC+88MIO9zn77LNTKBS2eMycObMk9dG3tC9FNn2v6amp6lbrIwAAAAAA2CXdujt92mmn9XAZO3fmmWdm2bJlufPOO5MkH/7wh/OBD3wg//Vf/7XD/d761rfm3//93zteDxw4sKR10jd09IOp0w8GAAAAAIDy6FYI8/nPf76n69ihRx99NHfeeWfmz5+fGTNmJEn+7d/+LfX19XnssccyZcqU7e5bW1ub8ePH91ap9BENjZtDmPpJ+sEAAAAAAFAeu7RO08KFC/Poo4+mUCjkkEMOyZFHHtlTdW2hoaEhI0eO7AhgkmTmzJkZOXJk5s2bt8MQ5u67787YsWMzatSovPnNb85XvvKVjB07drvbb9iwIRs2bOh43dzc3DMnQa95dt2zeezZx5IkMydZfg4AAAAAgPLoVgizatWqnHHGGbn77rszatSoFIvFNDU15fjjj89//ud/Zs899+zRIleuXLnN4GTs2LFZuXLldvc75ZRT8t73vjeTJ0/OkiVL8r//9//OCSeckIULF6a2tnab+1x++eX5whe+0GO10/vmL5ufJDlw9IEZPWR0masBAAAAAKC/qurOThdccEGam5vzyCOP5Lnnnsvzzz+fhx9+OM3Nzbnwwgs7fZzLLrsshUJhh48FCxYkSQqFwlb7F4vFbY63O/300/P2t789U6dOzamnnpo77rgjjz/+eG677bbt7nPJJZekqamp49HY2Njp86Fv0A8GAAAAAIC+oFszYe6888786le/ysEHH9wxdsghh+TrX/96Zs+e3enjnH/++TnjjDN2uM3ee++dBx98ME8//fRW7z3zzDMZN25cpz9vwoQJmTx5cp544ontblNbW7vdWTJUhvYQRj8YAAAAAADKqVshTFtbWwYMGLDV+IABA9LW1tbp44wZMyZjxozZ6Xb19fVpamrKH//4x0yfPj1Jcu+996apqSmzZnV+tsOzzz6bxsbGTJgwodP7UFk2tW3KvcvuTSKEAQAAAACgvLq1HNkJJ5yQf/7nf87y5cs7xp566qlcdNFFOfHEE3usuHYHH3xw3vrWt+bcc8/N/PnzM3/+/Jx77rn5n//zf2bKlCkd2x100EG55ZZbkiRr167NxRdfnIaGhvztb3/L3XffnVNPPTVjxozJu971rh6vkb7h4VUP58WNL2b4wOE5ZM9Dyl0OAAAAAAD9WLdCmOuvvz5r1qzJ3nvvnf322y/7779/9tlnn6xZsybXXXddT9eYJPnRj36UQw89NLNnz87s2bNz2GGH5T/+4z+22Oaxxx5LU1NTkqS6ujoPPfRQ3vnOd+bAAw/MBz/4wRx44IFpaGjI8OHDS1Ij5dfQuHkpspmTZqa6qrrM1QAAAAAA0J91azmyurq63H///Zk7d27+/Oc/p1gs5pBDDslJJ53U0/V12GOPPfLDH/5wh9sUi8WOnwcPHpxf/vKXJauHvkk/GAAAAAAA+opuhTDtTj755Jx88sk9VQvssnmN85Ik9XVCGAAAAAAAyqtby5FdeOGFufbaa7cav/766/Pxj398V2uCbln14qr85fm/JElm7DWjzNUAAAAAANDfdSuEufnmm3PMMcdsNT5r1qzcdNNNu1wUdMf8ZfOTJIfseUheN/h1Za4GAAAAAID+rlshzLPPPpuRI0duNT5ixIisXr16l4uC7mho1A8GAAAAAIC+o1shzP77758777xzq/E77rgj++677y4XBd0xb9nL/WCEMAAAAAAA9AE13dlpzpw5Of/88/PMM8/khBNOSJL8+te/zpVXXpl//dd/7dECoTM2tm7MfU/dlySprxPCAAAAAABQft0KYc4555xs2LAhX/nKV/KlL30pSbLPPvvkm9/8Zs4666weLRA648GnH8z6TeszatCoHDTmoHKXAwAAAAAA3VuObP369fngBz+YZcuW5emnn86DDz6Y888/P+PGjevp+qBTGpZt7gczc9LMVBW69WsNAAAAAAA9qlt3q9/5znfmBz/4QZJkwIABOemkk/K1r30tp512Wm644YYeLRA6Y16jfjAAAAAAAPQt3Qph7r///hx77LFJkptuuinjxo3Lk08+mR/84Ae59tpre7RA6Iz2mTBCGAAAAAAA+opuhTDr1q3L8OHDkyR33XVX3v3ud6eqqiozZ87Mk08+2aMFws6sXLsyf3vhbymkkBmTZpS7HAAAAAAASNLNEGb//ffPrbfemsbGxvzyl7/M7NmzkySrVq3KiBEjerRA2JmGxs2zYKaOnZoRtX7/AAAAAADoG7oVwlx66aW5+OKLs/fee2fGjBmpr9+8BNRdd92VI488skcLhJ3RDwYAAAAAgL6opjs7/d3f/V3+x//4H1mxYkUOP/zwjvETTzwx73rXu3qsOOiMjn4wdUIYAAAAAAD6jm6FMEky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8847c8YZZ+Svf/1r9thjj94sFahQXb3OXHnllbnhhhvyl7/8pWPsuuuuyxVXXJHGxsZeqRmoTIVCIbfccktOO+207W7jHnD3mAnDVlpaWrJw4cLMnj17i/HZs2dn3rx529ynoaFhq+3f8pa3ZMGCBdm4cWPJagUqU3euM6/V1taWNWvWuIEBbFN3rzP//u//nr/85S/5/Oc/X+oSgQrXnevML37xixx99NG54oorstdee+XAAw/MxRdfnPXr1/dGyUCF6c51ZtasWVm2bFluv/32FIvFPP3007npppvy9re/vTdKBnZz7gF3T025C6DvWb16dVpbWzNu3LgtxseNG5eVK1duc5+VK1duc/tNmzZl9erVmTBhQsnqBSpPd64zr3XVVVflxRdfzPve975SlAhUuO5cZ5544ol8+tOfzu9+97vU1PhvMrBj3bnO/PWvf83vf//7DBo0KLfccktWr16dj370o3nuuef0hQG20p3rzKxZs/KjH/0op59+el566aVs2rQp73jHO3Ldddf1RsnAbs494O4xE4btKhQKW7wuFotbje1s+22NA7Tr6nWm3U9+8pNcdtll+elPf5qxY8eWqjxgN9DZ60xra2vOPPPMfOELX8iBBx7YW+UBu4Gu/H+mra0thUIhP/rRjzJ9+vS87W1vy9e+9rV873vfMxsG2K6uXGf+9Kc/5cILL8yll16ahQsX5s4778ySJUty3nnn9UapQD/gHnDX+RM/tjJmzJhUV1dv9VcVq1at2irpbDd+/Phtbl9TU5PRo0eXrFagMnXnOtPupz/9aT70oQ/lZz/7WU466aRSlglUsK5eZ9asWZMFCxZk0aJFOf/885NsvllaLBZTU1OTu+66KyeccEKv1A5Uhu78f2bChAnZa6+9MnLkyI6xgw8+OMViMcuWLcsBBxxQ0pqBytKd68zll1+eY445Jp/85CeTJIcddliGDh2aY489Nl/+8pf9lTqwS9wD7h4zYdjKwIEDM23atMydO3eL8blz52bWrFnb3Ke+vn6r7e+6664cffTRGTBgQMlqBSpTd64zyeYZMGeffXZ+/OMfW9MY2KGuXmdGjBiRhx56KIsXL+54nHfeeZkyZUoWL16cGTNm9FbpQIXozv9njjnmmCxfvjxr167tGHv88cdTVVWVSZMmlbReoPJ05zqzbt26VFVtebuvuro6ySt/rQ7QXe4Bd48Qhm2aM2dOvvOd7+TGG2/Mo48+mosuuihLly7tmL56ySWX5KyzzurY/rzzzsuTTz6ZOXPm5NFHH82NN96Y7373u7n44ovLdQpAH9fV68xPfvKTnHXWWbnqqqsyc+bMrFy5MitXrkxTU1O5TgHo47pynamqqsrUqVO3eIwdOzaDBg3K1KlTM3To0HKeCtBHdfX/M2eeeWZGjx6df/iHf8if/vSn3HPPPfnkJz+Zc845J4MHDy7XaQB9WFevM6eeemp+/vOf54Ybbshf//rX/OEPf8iFF16Y6dOnZ+LEieU6DaCPWrt2bccfoSXJkiVLsnjx4ixdujSJe8A9xXJkbNPpp5+eZ599Nl/84hezYsWKTJ06NbfffnsmT56cJFmxYkXHP8Yk2WeffXL77bfnoosuyte//vVMnDgx1157bd7znveU6xSAPq6r15lvfetb2bRpUz72sY/lYx/7WMf4Bz/4wXzve9/r7fKBCtDV6wxAV3X1OjNs2LDMnTs3F1xwQY4++uiMHj0673vf+/LlL3+5XKcA9HFdvc6cffbZWbNmTa6//vp84hOfyKhRo3LCCSfkq1/9arlOAejDFixYkOOPP77j9Zw5c5K8cq/FPeCeUSiaiwgAAAAAANDjLEcGAAAAAABQAkIYAAAAAACAEhDCAAAAAAAAlIAQBgAAAAAAoASEMAAAAAAAACUghAEAAAAAACgBIQwAAAAAAEAJCGEAAIDd0t57751rrrmm3GV0SyXXDgAAvEIIAwAAAAAAUAJCGAAAAAAAgBIQwgAAAH3WTTfdlEMPPTSDBw/O6NGjc9JJJ+XFF1/Mcccdl49//ONbbHvaaafl7LPP3mJszZo1OfPMMzNs2LBMnDgx11133RbvX3bZZXn961+f2traTJw4MRdeeGHHez/84Q9z9NFHZ/jw4Rk/fnzOPPPMrFq1quP9u+++O4VCIb/85S9z5JFHZvDgwTnhhBOyatWq3HHHHTn44IMzYsSIvP/978+6des69jvuuONy/vnn5/zzz8+oUaMyevTofO5zn0uxWNzu99DU1JQPf/jDGTt2bEaMGJETTjghDzzwQDe+UQAAoDcJYQAAgD5pxYoVef/7359zzjknjz76aO6+++68+93v3mFY8Vr/9//+3xx22GG5//77c8kll+Siiy7K3Llzk2wOeK6++up861vfyhNPPJFbb701hx56aMe+LS0t+dKXvpQHHnggt956a5YsWbJVyJNsDnKuv/76zJs3L42NjXnf+96Xa665Jj/+8Y9z2223Ze7cuVuFP9///vdTU1OTe++9N9dee22uvvrqfOc739nmORSLxbz97W/PypUrc/vtt2fhwoU56qijcuKJJ+a5557r9HcBAAD0vppyFwAAALAtK1asyKZNm/Lud787kydPTpItQpLOOOaYY/LpT386SXLggQfmD3/4Q66++uqcfPLJWbp0acaPH5+TTjopAwYMyOtf//pMnz69Y99zzjmn4+d999031157baZPn561a9dm2LBhHe99+ctfzjHHHJMk+dCHPpRLLrkkf/nLX7LvvvsmSf7u7/4uv/nNb/KpT32qY5+6urpcffXVKRQKmTJlSh566KFcffXVOffcc7c6h9/85jd56KGHsmrVqtTW1iZJrrzyytx666256aab8uEPf7hL3wkAANB7zIQBAAD6pMMPPzwnnnhiDj300Lz3ve/Nv/3bv+X555/v0jHq6+u3ev3oo48mSd773vdm/fr12XfffXPuuefmlltuyaZNmzq2XbRoUd75zndm8uTJGT58eI477rgkydKlS7c45mGHHdbx87hx4zJkyJCOAKZ97NXLmCXJzJkzUygUtqjriSeeSGtr61bnsHDhwqxduzajR4/OsGHDOh5LlizJX/7yly59HwAAQO8SwgAAAH1SdXV15s6dmzvuuCOHHHJIrrvuukyZMiVLlixJVVXVVsuSbdy4sVPHbQ8/6urq8thjj+XrX/96Bg8enI9+9KN505velI0bN+bFF1/M7NmzM2zYsPzwhz/Mfffdl1tuuSXJ5mXKXm3AgAFbHPvVr9vH2traunz+7dra2jJhwoQsXrx4i8djjz2WT37yk90+LgAAUHqWIwMAAPqsQqGQY445Jsccc0wuvfTSTJ48Obfcckv23HPPrFixomO71tbWPPzwwzn++OO32H/+/PlbvT7ooIM6Xg8ePDjveMc78o53vCMf+9jHctBBB+Whhx5KsVjM6tWr8y//8i+pq6tLkixYsKDHzmtbdR1wwAGprq7eatujjjoqK1euTE1NTfbee+8eqwEAACg9IQwAANAn3Xvvvfn1r3+d2bNnZ+zYsbn33nvzzDPP5OCDD87QoUMzZ86c3Hbbbdlvv/1y9dVX54UXXtjqGH/4wx9yxRVX5LTTTsvcuXPzs5/9LLfddluS5Hvf+15aW1szY8aMDBkyJP/xH/+RwYMHZ/LkyWlra8vAgQNz3XXX5bzzzsvDDz+cL33pSz12bo2NjZkzZ04+8pGP5P777891112Xq666apvbnnTSSamvr89pp52Wr371q5kyZUqWL1+e22+/PaeddlqOPvroHqsLAADoWUIYAACgTxoxYkTuueeeXHPNNWlubs7kyZNz1VVX5ZRTTsnGjRvzwAMP5KyzzkpNTU0uuuiirWbBJMknPvGJLFy4MF/4whcyfPjwXHXVVXnLW96SJBk1alT+5V/+JXPmzElra2sOPfTQ/Nd//VdGjx6dZHNI85nPfCbXXnttjjrqqFx55ZV5xzve0SPndtZZZ2X9+vWZPn16qqurc8EFF+TDH/7wNrctFAq5/fbb89nPfjbnnHNOnnnmmYwfPz5vetObMm7cuB6pBwAAKI1C8bULKQMAAFAyxx13XI444ohcc8015S4FAAAosapyFwAAAAAAALA7EsIAAAAAAACUgOXIAAAAAAAASsBMGAAAAAAAgBIQwgAAAAAAAJSAEAYAAAAAAKAEhDAAAAAAAAAlIIQBAAAAAAAoASEMAAAAAABACQhhAAAAAAAASkAIAwAAAAAAUAJCGAAAAAAAgBL4/wH6mWMAlpyA9gAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "axisx = np.linspace(0, 1, 20)\n",
    "rs = []\n",
    "for i in axisx:\n",
    "    reg = XGBR(n_estimators=50, subsample=i, random_state=420)\n",
    "    rs.append(CVS(reg, Xtrain, Ytrain, cv=cv).mean())\n",
    "    \n",
    "print(axisx[rs.index(max(rs))], max(rs))\n",
    "\n",
    "plt.figure(figsize=(20,5))\n",
    "plt.plot(axisx, rs , c=\"green\", label=\"XGB\")\n",
    "plt.legend()\n",
    "plt.ylabel(\"score\")\n",
    "plt.xlabel(\"subsample\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8245643818982812"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg = XGBR(n_estimators=50\n",
    "         #  ,subsample=0.5\n",
    "           ,random_state=420).fit(Xtrain,Ytrain)\n",
    "reg.score(Xtest,Ytest) # 测试集结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.23541754119690833"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "MSE(Ytest, reg.predict(Xtest))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来是学习率，也就是shrinkage"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "#首先我们先来定义一个评分函数，这个评分函数能够帮助我们直接打印Xtrain上的交叉验证结果\n",
    "def regassess(reg, Xtrain, Ytrain, cv, scoring = [\"r2\"], show=True):\n",
    "    score = []\n",
    "    for i in range(len(scoring)):\n",
    "        sc = CVS(reg, Xtrain, Ytrain, cv=cv, scoring=scoring[i]).mean()\n",
    "        if show:\n",
    "            print(\"{}:{:.2f}\".format(scoring[i], sc))\n",
    "            \n",
    "        score.append(sc)\n",
    "    return score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "r2:0.82\n",
      "neg_mean_squared_error:-0.24\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.8165032887198894, -0.2434063706887161]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg = XGBR(n_estimators=50, random_state=420)\n",
    "regassess(reg, Xtrain, Ytrain, cv, scoring = [\"r2\", \"neg_mean_squared_error\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "learning_rate = 0\n",
      "r2:-1.84\n",
      "neg_mean_squared_error:-3.77\n",
      "00:02:329796\n",
      "\t\n",
      "learning_rate = 0.2\n",
      "r2:0.82\n",
      "neg_mean_squared_error:-0.24\n",
      "00:02:300015\n",
      "\t\n",
      "learning_rate = 0.5\n",
      "r2:0.81\n",
      "neg_mean_squared_error:-0.26\n",
      "00:02:296825\n",
      "\t\n",
      "learning_rate = 1\n",
      "r2:0.73\n",
      "neg_mean_squared_error:-0.36\n",
      "00:02:270698\n",
      "\t\n"
     ]
    }
   ],
   "source": [
    "import datetime\n",
    "\n",
    "for i in [0,0.2,0.5,1]:\n",
    "    time0=time()\n",
    "    reg = XGBR(n_estimators=50, random_state=420, learning_rate=i)\n",
    "    print(\"learning_rate = {}\".format(i))\n",
    "    regassess(reg, Xtrain, Ytrain, cv, scoring = [\"r2\",\"neg_mean_squared_error\"])\n",
    "    print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))\n",
    "    print(\"\\t\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.25000000000000006 0.8201799349457811\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABkoAAAGsCAYAAACSD/sZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAACuKElEQVR4nOzdd3hUZaI/8O/UTHqvJCSB9Ay9g4B0QkKTrGJBwqorKrA+7nr3+uzd5nX1XnWvKwgouoIFy5qoYEJHQJAiIAEmPSQB0nvP9PP7gx9HxyQQIOSkfD/7zAOc95zJd3iymJnved9XJgiCACIiIiIiIiIiIiIiogFILnUAIiIiIiIiIiIiIiIiqbAoISIiIiIiIiIiIiKiAYtFCRERERERERERERERDVgsSoiIiIiIiIiIiIiIaMBiUUJERERERERERERERAMWixIiIiIiIiIiIiIiIhqwWJQQEREREREREREREdGApZQ6QHexWq0oLS2Fs7MzZDKZ1HGIiIiIiIiIiIiIiEhCgiCgqakJAQEBkMs7nzfSb4qS0tJSBAUFSR2DiIiIiIiIiIiIiIh6katXryIwMLDT8X5TlDg7OwO49oJdXFwkTkNERERERERERERERFJqbGxEUFCQ2B90pt8UJdeX23JxcWFRQkREREREREREREREAHDT7Tq4mTsREREREREREREREQ1YLEqIiIiIiIiIiIiIiGjAYlFCREREREREREREREQDVr/Zo4SIiIiIiIiIiIiIqK+xWCwwmUxSx+iTVCoVFArFHT8PixIiIiIiIiIiIiIioh4mCALKy8tRX18vdZQ+zc3NDX5+fjfdsP1GWJQQEREREREREREREfWw6yWJj48PHBwc7uiD/oFIEAS0traisrISAODv73/bz8WihIiIiIiIiIiIiIioB1ksFrEk8fT0lDpOn2Vvbw8AqKyshI+Pz20vw8XN3ImIiIiIiIiIiIiIetD1PUkcHBwkTtL3Xf87vJN9XliUEBERERERERERERFJgMtt3bnu+DtkUUJERERERERERERERAMWixIiIiIiIiIiIiIiIhqwWJQQEREREREREREREdGAxaKEiIiIiIiIiIiIiIi65N5778Wzzz7bbc+XlJSEJUuWdNvz3Q6lpF+diIjoNgmCgLq6OjQ0NECpVIoPlUpl82eFQsGN0YiIiIiIiIiIqFMsSoiIqNfT6/WorKxERUWFzcNkMnXp+l8WKL8sU375566cd7PnYEFDRERERERERLdCEIQuf9bR3VQqVZc+x0hKSsKRI0dw5MgRvPnmmwCAwsJCtLa24ve//z2+++47ODo6Yu7cuXjjjTfg5eUFAEhOTsbf/vY35Ofnw8HBAaNGjcKOHTvw2muv4YMPPgAA8esfOnQI99577915oZ1gUUJERL2G1WpFbW1tu0KkoaGhw/MVCgXc3NxgtVphNpthNpthMplgNpttzrs+1tNY0BARERERERFRV5lMJrzyyiuSfO0XXngBarX6pue9+eabyM3NhVarxYsvvggAsFgsmD59Op544gn83//9H9ra2vCHP/wB999/P7799luUlZXhwQcfxKuvvoqlS5eiqakJR48ehSAI+P3vf4+srCw0NjZi69atAAAPD4+7+lo7wqKEiIgk0draalOGVFZWorKystNCw8XFBb6+vjYPT09PyOXtt9sSBAEWi6VdeXK7f76Va36OBQ0RERERERER9Seurq5Qq9VwcHCAn58fAODPf/4zRo8ejZdfflk87/3330dQUBByc3PR3NwMs9mM++67D8HBwQCAYcOGiefa29vDYDCIzycFFiVERHRXWSwW1NTUoLy8XCxEKioq0NTU1OH5KpUKPj4+NoWIj48P7O3tu/w1ZTKZ+AF+T/plQfPLQoUFDQsaIiIiIiIios6oVCq88MILkn3t23X27FkcOnQITk5O7cYuXbqEuXPnYtasWRg2bBjmzZuHuXPnIjExEe7u7ncSuVuxKCEiom4hCAJaWlraLZtVVVUFq9Xa4TXu7u5iEeLr6ws/Pz+4u7v32Q+++1NB09Xn+LneUtDcrGy504LGzs6uz36PEhERERERUe8lk8m6tPxVb2O1WrFw4UL87//+b7sxf39/KBQK7N+/H8ePH8e+ffuwYcMG/PGPf8SpU6cQGhoqQeL2WJQQEdEtM5vNqKqqaleKtLa2dni+nZ2dTSFy/fd2dnY9nLx/YkHTswWNRqPBoEGDEBAQgMDAQAQEBHR41wwRERERERFRf6RWq2GxWMQ/jx49GikpKQgJCen0swmZTIYpU6ZgypQp+POf/4zg4GB89dVXeO6559o9nxRYlBARUacEQUBjY6PNPiIVFRWorq6GIAjtzpfJZPDw8Gi3l4irqyvvwO+HemtBc6uFza0W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\n",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可以探索学习率的影响\n",
    "axisx = np.arange(0.05, 1, 0.1)\n",
    "rs = []\n",
    "te = []\n",
    "for i in axisx:\n",
    "    reg = XGBR(n_estimators=50, random_state=420, learning_rate=i)\n",
    "    score = regassess(reg,Xtrain, Ytrain, cv, scoring = [\"r2\",\"neg_mean_squared_error\"], show=False)\n",
    "    test = reg.fit(Xtrain, Ytrain).score(Xtest, Ytest)\n",
    "    rs.append(score[0])\n",
    "    te.append(test)\n",
    "    \n",
    "print(axisx[rs.index(max(rs))], max(rs))\n",
    "\n",
    "plt.figure(figsize=(20,5))\n",
    "plt.plot(axisx, te, c=\"gray\", label=\"test\")\n",
    "plt.plot(axisx, rs, c=\"green\", label=\"train\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "XGBoost的基学习可以是决策树，也可以是线性分类器，参数booster用于选择基模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "gbtree:\n",
      "0.8266947030954811\n",
      "gblinear:\n",
      "0.48384667482815025\n",
      "dart:\n",
      "0.8266947027292105\n"
     ]
    }
   ],
   "source": [
    "for booster in [\"gbtree\",\"gblinear\",\"dart\"]:\n",
    "    reg = XGBR(n_estimators=50\n",
    "               ,learning_rate=0.2\n",
    "               ,random_state=420\n",
    "               ,booster=booster).fit(Xtrain,Ytrain)\n",
    "    print(booster+\":\")\n",
    "    print(reg.score(Xtest,Ytest))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## xgboost库自身的实现\n",
    "相比于sklearnAPI，xgboost库自身的实现才能真正体现xgboost的优势"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "import xgboost as xgb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<xgboost.core.DMatrix at 0x14b1a9c8be0>"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#使用类DMatrix读取数据\n",
    "dtrain = xgb.DMatrix(Xtrain, Ytrain) #特征矩阵和标签都进行传入\n",
    "dtest = xgb.DMatrix(Xtest, Ytest)\n",
    "dtrain\n",
    "# DMatrix似乎没有提供数据查看接口"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "#写明参数\n",
    "# objective: 指要使用的损失函数\n",
    "param = {'verbosity':0 \n",
    "         ,'objective':'reg:squarederror'\n",
    "         ,\"eta\":0.2} # eta就是学习率\n",
    "num_round = 50 # n_estimators"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "#可以直接导入的参数是训练数据，提升树规模，其他参数都需要通过params来导入\n",
    "bst = xgb.train(param, dtrain, num_round)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.92553693 0.76963836 2.5768301  ... 2.374277   1.4727994  0.61677206]\n",
      "(6192,)\n"
     ]
    }
   ],
   "source": [
    "#接口predict\n",
    "preds = bst.predict(dtest)\n",
    "print(preds)\n",
    "print(preds.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8266947030954811"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import r2_score\n",
    "r2_score(Ytest, preds)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.23255885728978024"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "MSE(Ytest,preds)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "#为了便捷，使用全数据\n",
    "dfull = xgb.DMatrix(X,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "# gamma就是正则化项中 叶子结点数量的系数\n",
    "# alpha是正则化项中 叶子分数的L1范数的系数\n",
    "# lambda是正则化项中 叶子分数的L2范数的系数\n",
    "param1 = {'obj':'reg:squarederror', \"gamma\":0, \"alpha\":0, \"lambda\":1} \n",
    "num_round = 100\n",
    "n_fold=5 #sklearn - KFold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "00:03:461930\n"
     ]
    }
   ],
   "source": [
    "#使用类xgb.cv， 它会返回每一次迭代（新建树）后的结果，注意这个结果是交叉验证结果的统计值（见下）\n",
    "time0 = time()\n",
    "cvresult1 = xgb.cv(param1, dfull, num_round, n_fold) # 交叉验证\n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>train-rmse-mean</th>\n",
       "      <th>train-rmse-std</th>\n",
       "      <th>test-rmse-mean</th>\n",
       "      <th>test-rmse-std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.444935</td>\n",
       "      <td>0.001947</td>\n",
       "      <td>1.448802</td>\n",
       "      <td>0.011640</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.106852</td>\n",
       "      <td>0.001425</td>\n",
       "      <td>1.116278</td>\n",
       "      <td>0.011333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.883654</td>\n",
       "      <td>0.002789</td>\n",
       "      <td>0.899023</td>\n",
       "      <td>0.010976</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.740635</td>\n",
       "      <td>0.003774</td>\n",
       "      <td>0.761316</td>\n",
       "      <td>0.010609</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.647501</td>\n",
       "      <td>0.002664</td>\n",
       "      <td>0.676030</td>\n",
       "      <td>0.010015</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>0.281064</td>\n",
       "      <td>0.004182</td>\n",
       "      <td>0.471388</td>\n",
       "      <td>0.009079</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>0.280255</td>\n",
       "      <td>0.004068</td>\n",
       "      <td>0.471407</td>\n",
       "      <td>0.008992</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>0.279464</td>\n",
       "      <td>0.004004</td>\n",
       "      <td>0.471581</td>\n",
       "      <td>0.009077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>0.278544</td>\n",
       "      <td>0.003608</td>\n",
       "      <td>0.471343</td>\n",
       "      <td>0.009010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>0.277641</td>\n",
       "      <td>0.003488</td>\n",
       "      <td>0.471372</td>\n",
       "      <td>0.009051</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    train-rmse-mean  train-rmse-std  test-rmse-mean  test-rmse-std\n",
       "0          1.444935        0.001947        1.448802       0.011640\n",
       "1          1.106852        0.001425        1.116278       0.011333\n",
       "2          0.883654        0.002789        0.899023       0.010976\n",
       "3          0.740635        0.003774        0.761316       0.010609\n",
       "4          0.647501        0.002664        0.676030       0.010015\n",
       "..              ...             ...             ...            ...\n",
       "95         0.281064        0.004182        0.471388       0.009079\n",
       "96         0.280255        0.004068        0.471407       0.008992\n",
       "97         0.279464        0.004004        0.471581       0.009077\n",
       "98         0.278544        0.003608        0.471343       0.009010\n",
       "99         0.277641        0.003488        0.471372       0.009051\n",
       "\n",
       "[100 rows x 4 columns]"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 看看类xgb.cv返回了什么结果\n",
    "print(type(cvresult1))\n",
    "cvresult1 # 随着树不断增加，模型的效果如何变化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABlUAAAHACAYAAAA7nO5dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB6uElEQVR4nOzdd3iUVd7G8XtKeqMnRAMEAQGRDgp2ERBWLKviiitie3VRUVgb6+qCBdRVF8UVdVdkFwvYdRWVuK50pUhsYEMgIAkhtFSSmcy8fzyZyUwySSZhMk/K93Nd53rqzPyeSd6zvrk551jcbrdbAAAAAAAAAAAAqJXV7AIAAAAAAAAAAACaA0IVAAAAAAAAAACAIBCqAAAAAAAAAAAABIFQBQAAAAAAAAAAIAiEKgAAAAAAAAAAAEEgVAEAAAAAAAAAAAgCoQoAAAAAAAAAAEAQCFUAAAAAAAAAAACCYDe7gHBzuVzas2ePEhISZLFYzC4HAAAAAAAAAACYyO12q6CgQKmpqbJaax+L0upClT179igtLc3sMgAAAAAAAAAAQBOya9cuHXvssbXe0+pClYSEBEnGl5OYmGhyNY3D4XBo+fLlGjNmjCIiIswuB0ALRn8DIJzocwCEE30OgHChvwEQTvQ5geXn5ystLc2bH9Sm1YUqnim/EhMTW3SoEhsbq8TERP4PA0Cjor8BEE70OQDCiT4HQLjQ3wAIJ/qc2gWzZAgL1QMAAAAAAAAAAASBUAUAAAAAAAAAACAIhCoAAAAAAAAAAABBaHVrqgAAAAAAAAAAwsPtdsvpdKq8vNzsUiBjTRW73a4jR460up9JRESEbDbbUb8PoQoAAAAAAAAAIOTKysqUnZ2t4uJis0tBBbfbrZSUFO3atSuoRdlbEovFomOPPVbx8fFH9T6EKgAAAAAAAACAkHK5XNq+fbtsNptSU1MVGRnZ6v6I3xS5XC4VFhYqPj5eVmvrWR3E7XZr37592r17t3r27HlUI1YIVQAAAAAAAAAAIVVWViaXy6W0tDTFxsaaXQ4quFwulZWVKTo6ulWFKpLUsWNH7dixQw6H46hCldb1rQEAAAAAAAAAwqa1/eEeTVeoRkrxGw0AAAAAAAAAABAEQhUAAAAAAAAAABpJt27dNG/ePLPLQIgQqgAAAAAAAAAAUOHMM8/UbbfdFrL327Bhg/7v//4vZO+HSm+++ab69u2rqKgo9e3bV2+//XajfyahCgAAAAAAAAAA9eB2u+V0OoO6t2PHjoqNjW3kilqfdevW6bLLLtOVV16pr776SldeeaUmTpyoL774olE/l1AFAAAAAAAAAABJU6ZM0YoVK/Tkk0/KYrHIYrFox44d+uyzz2SxWPTxxx9r6NChioqK0qpVq7Rt2zZdcMEFSk5OVnx8vIYNG6ZPPvnE7z2rTv9lsVj0z3/+UxdddJFiY2PVs2dPvffee/Wu9cEHH1SnTp2UkJCg6667TnfffbcGDhzovb5hwwaNHj1aHTp0UFJSks444wx9+eWXfu9hsVj03HPP6bzzzlNsbKz69OmjdevW6eeff9aZZ56puLg4jRgxQtu2bfO+ZtasWRo4cKAWLlyoLl26KD4+Xn/4wx9UXl6uRx99VCkpKerUqZMeeughv8964okndOKJJyouLk5paWmaOnWqCgsL6/3cHvPmzdPo0aM1c+ZM9e7dWzNnztSoUaMafao1QhUYDmyWPj5Z+u8osysBAAAAAAAA0BK53VJRkTnN7Q6qxCeffFIjRozQ9ddfr+zsbGVnZystLc17/c4779TcuXO1detW9e/fX4WFhRo/frw++eQTbd68WWPHjtWECROUlZVV6+fMnj1bEydO1Ndff63x48friiuu0IEDB4L+Kl9++WU99NBDeuSRR7Rp0yZ16dJFCxYs8LunoKBAV111lVatWqXPP/9cPXv21HnnnaeCggK/+x544AFNnjxZmZmZ6t27tyZNmqQbbrhBM2fO1MaNGyVJN998s99rtm3bpg8//FAfffSRXn31VS1cuFC/+c1vtHv3bq1YsUKPPPKI/vznP+vzzz/3vsZqteqpp57St99+q3/961/69NNPdeedd3qvZ2VlKT4+vtZ24403eu9ft26dxowZ41fX2LFjtXbt2qC/x4awN+q7o/nYlSPt/0JyRhgdjMVidkUAAAAAAAAAWpLiYik+3pzPLiyU4uLqvC0pKUmRkZGKjY1VSkpKtev333+/Ro8e7T1u3769BgwY4D1+8MEH9fbbb+u9996rFkT4mjJlii6//HJJ0pw5czR//nytX79e5557blCPM3/+fF177bW6+uqrJUn33Xefli9f7jfy4+yzz/Z7zXPPPae2bdtqzZo1mjhxovf81Vdf7T2+6667NGLECN17770aO3asJOnW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4sSJOvfcc73vOXLkyKDqWbNmjW688UbdeuutyszM1OjRo/XQQw/53VNYWKjx48frk08+0ebNmzV27FhNmDCh2t/W//a3v2nkyJFasWKFxo8fryuvvFKTJ0/W73//e3355Zfq0aOHJk+eLLfPd1VcXKynnnpKS5Ys0UcffeR9rmXLlmnZsmVavHixnn/+eb3xxhve15SVlemBBx7QV199pXfeeUfbt2/XlClT/GqJj4+vtY0bN85777p16zRmjP/a32PHjtXGjRvlcDiC+h5DydTpv84880y/H1BVixYtqvX1s2bN0qxZs0JbFKTOgyQtkaIOGZ1NK1uwCAAAAAAAAEAjKC+WXos357MnFkr2umc7SkpKUmRkpGJjY5WSkuI9v2DBAg0ePFhz5szxnlu4cKHS0tL0448/qrCwUE6nU7/97W/VtWtXSdKJJ57ovTcmJkalpaV+7xmM+fPna9y4cbr99tslSb169dLatWv1/vvve+8ZMGCABgwY4D1+8MEH9fbbb+u9997zrk8uSePHj9cNN9yg/Px83XvvvXr22Wc1bNgwXXrppZKku+66SyNGjNDevXu9dTocDi1YsEDHHXecJOmSSy7R4sWLtXfvXsXHx6tv374666yz9L///U+XXXaZJOmaa67xfmb37t311FNPafjw4SosLFR8vPHz98xeVZOYmBjvfk5OjpKTk/2uJycny+l0Ki8vT507dw7uywyRZrOmCsLouJOlXyRFuKSSbCk21eyKAAAAAAAAAMA0mzZt0v/+9z9vKOBr27ZtGjNmjEaNGqUTTzxRY8eO1ZgxY3TJJZeobdu2R/W5P/zwgy666CK/c8OHD/cLVYqKijR79my9//772rNnj5xOp0pKSqqNVOnfv7933xNS+AY/nnO5ubneUCU2NtYbqHju6datm9/3kJyc7De91+bNmzVr1ixlZmbqwIEDcrlckqSsrCz17dtXktSjR496fQ+WKv/w3zNYo+r5cCBUQXU9+0hfSEqWtP9bQhUAAAAAAAAAR88Wa4wYMeuzj4LL5dKECRP0yCOPVLvWuXNn2Ww2ZWRkaO3atVq+fLnmz5+ve+65R1988YXS09Mb/Llut7vGQMHjjjvu0Mcff6zHHntMPXr0UExMjC655BKVlZX53RcREeHd97xnoHOeEKTqdc89gc55XlNUVKQxY8ZozJgxeumll9SxY0dlZWVp7NixfvUECqd8nXbaafrwww8lSSkpKcrJyfG7npubK7vdrvbt29f6Po2BUAXVdegg5dmk5HJpxxdS2pi6XwMAAAAAAAAAtbFYgpqCy2yRkZF+C69L0uDBg/Xmm2+qW7dustsD/1ndYrHolFNO0SmnnKL77rtPXbt21dtvv60ZM2YEfM9g9O7dW+vXr/c757uYvCStWrVKU6ZM8Y5oKSws1I4dO+r9WaHw/fffKy8vTw8//LDS0tIkVa9Xqt/0XyNGjNB//vMfv+vLly/X0KFDqwU84WDqQvVooiwWqaydsZ+TaWopAAAAAAAAABBO3bp10xdffKEdO3YoLy9PLpdLN910kw4cOKDLL79c69ev1y+//KLly5frmmuuUXl5ub744gvNmTNHGzduVFZWlt566y3t27dPffr08b7n119/rR9++EF5eXlBL7B+yy23aNmyZXriiSf0008/6bnnntOHH37oN3qlR48eeuutt5SZmamvvvpKkyZN8httEk5dunRRZGSk5s+fr19++UXvvfeeHnjggWr39ejRo9Z2zDHHeO+98cYbtXPnTs2YMUNbt27VwoUL9cILL3jXmQk3QhUEZq/4pS34ydw6AAAAAAAAACCMbr/9dtlsNvXt29c7fVVqaqrWrFmj8vJyjR07Vv369dOtt96qpKQkWa1WJSYmauXKlRo/frx69eqlP//5z3r88cc1btw4SdL111+v448/XkOHDlXHjh21Zs0aSdKZZ56pKVOm1FjLKaecomeffVZPPPGEBgwYoI8++kjTp09XdHS0956//e1vatu2rUaOHKkJEyZo7NixGjx4cKN+RzXp2LGjFi1apNdff119+/bVww8/rMcee+yo3jM9PV3Lli3TZ599poEDB+qBBx7QU089pYsvvjhEVdePxV11ArYWLj8/X0lJSTp8+LASExPNLqdROBwOLVu2TOPHj2/48Ke5l0ldX5OK2kvX54W2QAAtRkj6GwAIEn0OgHCizwEQLvQ3aKmOHDmi7du3Kz093S8AgL9u3bpp1qxZtQYrVV1//fX6/vvvtWrVqnp/nsvlUn5+vhITE2W1tq4xF7X9TtYnN2hd3xqC13mgsY08KLWu3A0AAAAAAAAAGt3333+vhIQETZ48udb7HnvsMX311Vf6+eefNX/+fP3rX//SVVddFaYqURUL1SOw40ZIOyRF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4USfAyCc6HMAhAv9DYBwos8JzJMXePKD2rS6UKWgoECSlJaWZnIlAAAAAAAAAACgqSgoKFBSUlKt91jcwUQvLYjL5dKePXuUkJAgi8VidjmNIj8/X2lpadq1a5cSExPNLgdAC0Z/AyCc6HMAhBN9DoBwob8BEE70OYG53W4VFBQoNTVVVmvtq6a0upEqVqtVxx57rNllhEViYiL/hwEgLOhvAIQTfQ6AcKLPARAu9DcAwok+p7q6Rqh4sFA9AAAAAAAAAABAEAhVAAAAAAAAAAAAgkCo0gJFRUXpL3/5i6KioswuBUALR38DIJzocwCEE30OgHChvwEQTvQ5R6/VLVQPAAAAAAAAAADQEIxUAQAAAAAAAAAACAKhCgAAAAAAAAAAQBAIVQAAAAAAAAAAAIJAqAIAAAAAAAAAABAEQpUW5plnnlF6erqio6M1ZMgQrVq1yuySADRzc+fO1bBhw5SQkKBOnTrpwgsv1A8//OB3j9vt1qxZs5SamqqYmBideeaZ+u6770yqGEBLMnfuXFksFt12223ec/Q5AELp119/1e9//3u1b99esbGxGjhwoDZt2uS9Tp8DIBScTqf+/Oc/Kz09XTExMerevbvuv/9+uVwu7z30NwAaauXKlZowYYJSU1NlsVj0zjvv+F0Ppn8pLS3VLbfcog4dOiguLk7nn3++du/eHcanaD4IVVqQpUuX6rbbbtM999yjzZs367TTTtO4ceOUlZVldmkAmrEVK1bopptu0ueff66MjAw5nU6NGTNGRUVF3nseffRRPfHEE3r66ae1YcMGpaSkaPTo0SooKDCxcgDN3YYNG/T888+rf//+fufpcwCEysGDB3XKKacoIiJCH374obZs2aLHH39cbdq08d5DnwMgFB555BE9++yzevrpp7V161Y9+uij+utf/6r58+d776G/AdBQRUVFGjBggJ5++umA14PpX2677Ta9/fbbWrJkiVavXq3CwkKdd955Ki8vD9djNBsWt9vtNrsIhMZJJ52kwYMHa8GCBd5zffr00YUXXqi5c+eaWBmAlmTfvn3q1KmTVqxYodNPP11ut1upqam67bbbdNddd0ky/nVDcnKyHnnkEd1www0mVwygOSosLNTgwYP1zDPP6MEHH9TAgQM1b948+hwAIXX33XdrzZo1NY7wp88BECrnnXeekpOT9cILL3jPXXzx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Ni1atEglJSWyWCxq06aNJk2a5BcU3HvvvXr44Yf15JNPavHixbr88svVr18/9enTR5KUkJCgRYsWKTU1Vd98842uv/56JSQk6M4775QkXXHFFRo0aJAWLFggm82mzMxMRURESJK++eYbjR07Vg888IBeeOEF7du3TzfffLNuvvnmWsOHbdu26cMPP9RHH32kbdu26ZJLLtH27dvVq1cvrVixQmvXrtU111yjUaNG6eSTT5bb7daFF16ouLg4rVixQk6nU1OnTtVll12mzz77TJL02muv6S9/+Yv+/ve/67TTTtPixYv11FNPqXv37t7P/cc//qG//OUvevrppzVo0CBt3rxZ119/veLi4nTVVVdVq/Pee+/Vli1b9OGHH6pDhw76+eefVVJScnQ/RAAAAABBs7jdbrfZRQAAAABonpxOp3bv3q38/HwNHTpUGzZsUHx8vAYOHKgPPvjAO/KjQ4cOkoyF6m+88UYtWLDA+x4nn3yyBg8eXOMIjb/+9a9aunSpdzRKYmKi5s+fHzB0mDx5smJiYvTcc895z61evVpnnHGGioqKFB0dXe01s2bN0l//+lfl5OQoISFBknTuuefqhx9+0LZt22S1GgP8e/furSlTpujuu+9WRkaGxo0bp+3btystLU2StGXLFp1wwglav369hg0bppEjR2rAgAHVnvXIkSPehee7dOmiRx55RJdffrn3ngcffFDLli3T2rVrtWPHDqWnp2vz5s0aOHCgzj//fHXo0EELFy6s+4cDAAAAIOSY/gsAAABAg9ntdnXr1k3ff/+9hg0bpgEDBignJ0fJyck6/fTT1a1bN2+g4jFixIhqx1u3bvUev/HGGzr11FOVkpKi+Ph43XvvvX4L3s+YMUPXXXedzjnnHD388MPatm2b99qmTZu0aNEixcfHe9vYsWPlcrm0ffv2Gp+jW7du3kBFkpKTk9W3b19voOI5l5ubK0naunWr0tLSvIGKJPXt21dt2rTxPsvWrVsDPqvHvn37tGvXLl177bV+9T744IN+z+TrD3/4g5YsWaKBAwfqzjvv1Nq1a2t8JgAAAAChx/RfAAAAABrshBNO0M6dO+VwOORyuRQfHy+n0ymn06n4+Hh17dpV3333XZ3vY7FYJEmff/65fve732n27NkaO3askpKStGTJEj3++OPee2fNmqVJkybpgw8+0Icffqi//OUvWrJkiS666CK5XC7dcMMNmjZtWrXP6NKlS42f75k+zLeeQOdcLpckye12e2v2VdP5QDzv9Y9//EMnnXSS3zWbzRbwNePGjdPOnTv1wQcf6JNPPtGoUaN000036bHHHgvqMwEAAAAcHUaqAAAAAGiwZcuWKTMzUykpKXrppZeUmZmpfv36ad68ecrMzNSyZcuqvebzzz+vdty7d29J0po1a9S1a1fdc889Gjp0qHr27KmdO3dWe49evXpp+vTpWr58uX77299610sZPHiwvvvuO/Xo0aNai4yMDNlz9+3bV1lZWdq1a5f33JYtW3T48GHv2jB9+vQJ+KweycnJOuaYY/TLL79UqzU9Pb3Gz+7YsaOmTJmil156SfPmzdPzzz8fsucCAAAAUDtGqgAAAABosK5duyonJ0d79+7VBRdcIKvVqi1btui3v/2tUlNTA77m9ddf19ChQ3Xqqafq5Zdf1vr16/XCCy9Iknr06KGsrCwtWbJEw4YN0wcffKC3337b+9qSkhLdcccduuSSS5Senq7du3drw4YNuvjiiyVJd911l04++WTddNNN3gXft27dqoyMDM2fPz9kz33OOeeof//+uuKKKzRv3jzvQvVnnHGGhg4dKkm69dZbddVVV/k963fffee3UP2sWbM0bdo0JSYmaty4cSotLdXGjRt18OBBzZgxo9rn3nfffRoyZIhOOOEElZaW6v333/eGOAAAAAAaHyNVAAAAAByVzz77TMOGDVN0dLS++OILHXPMMTUGKpI0e/ZsLVmyRP3799e//vUvvfzyy+rbt68k6YILLtD06dN18803a+DAgVq7dq3uvfde72ttNpv279+vyZMnq1evXpo4caLGjRun2bNnS5L69++vFStW6KefftJpp52mQYMG6d5771Xnzp1D+swWy/+3b4c2FgJBAIbnhQRPC3gweDD0QAMYKnjBUAliJThaohLOXXLiJSsuuRPfpyeTXf1nXnFdV1RVFX3fxziOUdd1nOf5PTNNU2zbFu/3O7qui/u+Y1mWH3vmeY593yOlFE3TxDAMkVL6eKlSlmWs6xpt20bf91EURRzH8at/AwAAPns9z/P89SMAAAAAAAD+O5cqAAAAAAAAGUQVAAAAAACADKIKAAAAAABABlEFAAAAAAAgg6gCAAAAAACQQVQBAAAAAADIIKoAAAAAAABkEFUAAAAAAAAyiCoAAAAAAAAZRBUAAAAAAIAMogoAAAAAAEAGUQUAAAAAACDDF5aF1bQs7MZRAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(20,5))\n",
    "plt.grid()\n",
    "plt.plot(range(1,101), cvresult1.iloc[:,0],c=\"red\",label=\"train, gamma=0\")\n",
    "plt.plot(range(1,101), cvresult1.iloc[:,2],c=\"orange\",label=\"test, gamma=0\")\n",
    "plt.legend()\n",
    "plt.ylabel(\"RMSE\")\n",
    "plt.xlabel(\"#base models\")\n",
    "plt.show()\n",
    "\n",
    "#从这个图中，我们可以看出什么？\n",
    "#怎样从图中观察模型的泛化能力？\n",
    "#从这个图的角度来说，模型的调参目标是什么？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "# xgboost中回归模型的默认评估指标是RMSE\n",
    "# 也提供了别的评估指标，使用参数eval_metric控制\n",
    "param1 = {'obj':'reg:squarederror', \"gamma\":0, \"eval_metric\":\"mae\"}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看gamma是如何控制过拟合的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "00:06:065761\n"
     ]
    }
   ],
   "source": [
    "param1 = {'obj':'reg:squarederror', \"gamma\":0}\n",
    "param2 = {'obj':'reg:squarederror', \"gamma\":20}\n",
    "num_round = 180\n",
    "n_fold=5\n",
    "\n",
    "time0 = time()\n",
    "cvresult1 = xgb.cv(param1, dfull, num_round, n_fold)\n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "00:06:388125\n"
     ]
    }
   ],
   "source": [
    "time0 = time()\n",
    "cvresult2 = xgb.cv(param2, dfull, num_round,n_fold)\n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABkEAAAGsCAYAAABq7wDuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAACIV0lEQVR4nOzdeXxU1f3/8ffMZLJMNhKWhCWQCIggYRcFquICaBS3IlYUiqKVolikaotWC+oPtRUE9SvWaosLuIu1NoKxyiJYkE1FFtnDkhDW7MtkZn5/XGaSyUYSktwsr+fjcR5z5869dz53koMP551zjsXj8XgEAAAAAAAAAADQzFjNLgAAAAAAAAAAAKA+EIIAAAAAAAAAAIBmiRAEAAAAAAAAAAA0S4QgAAAAAAAAAACgWSIEAQAAAAAAAAAAzRIhCAAAAAAAAAAAaJYIQQAAAAAAAAAAQLMUYHYB1eF2u3X48GGFh4fLYrGYXQ4AAAAAAAAAADCRx+NRdna2OnToIKu18vEeTSIEOXz4sOLi4swuAwAAAAAAAAAANCIHDhxQp06dKn29SYQg4eHhkoybiYiIMLmahuN0OvXFF19o5MiRstvtZpcDmI4+AfijTwD+6BOAP/oEUIL+APijTwD+6BNNU1ZWluLi4nz5QWWaRAjinQIrIiKixYUgDodDERERdD5A9AmgLPoE4I8+AfijTwAl6A+AP/oE4I8+0bSdaQkNFkYHAAAAAAAAAADNEiEIAAAAAAAAAABolghBAAAAAAAAAABAs9Qk1gQBAAAAAAAAANQPl8slp9NpdhmmcTqdCggIUEFBgVwul9nl4DS73S6bzXbW1yEEAQAAAAAAAIAWyOPxKD09XadOnTK7FFN5PB7FxsbqwIEDZ1xkGw2rVatWio2NPaufCyEIAAAAAAAAALRA3gCkXbt2cjgcLTYAcLvdysnJUVhYmKxWVpBoDDwej/Ly8pSRkSFJat++fa2vRQgCAAAAAAAAAC2My+XyBSCtW7c2uxxTud1uFRUVKTg4mBCkEQkJCZEkZWRkqF27drWeGoufKAAAAAAAAAC0MN41QBwOh8mVAJXz/n6ezZo1hCAAAAAAAAAA0EK11Cmw0DTUxe8nIQgAAAAAAAAAAGiWCEEAAAAAAAAAAECzRAgCAAAAAAAAAGiR4uPjNX/+fLPLQD0iBAEAAAAAAAAANBnDhw/XtGnT6uRa3333ne6+++46uVZLVlhYqKlTp6pNmzYKDQ3Vddddp4MHD5pdliRCkCZtyxbp88+l9HSzKwEAAAAAAACAxsHj8ai4uLhax7Zt21YOh6OeK2r+pk2bpiVLlujdd9/VN998o5ycHF177bVyuVxml0YI0pSNHfODkpKkj9/7r9mlAAAAAAAAAGjqPB4pN9ec5vFUq8SJEydqxYoVmj9/viwWiywWixYuXCiLxaJly5Zp0KBBCgoK0qpVq7R7925df/31iomJUVhYmC644AJ9+eWXftcrOx2WxWLRa6+9phtvvFEOh0Pdu3fXp59+WmVNaWlpuuaaaxQSEqKEhAQtXrxY8fHxmjdvnu+YuXPnKjExUaGhoYqLi9OUKVOUk5Pje33hwoVq1aqVPvvsM/Xo0UMOh0NjxoxRbm6u3njjDcXHxysqKkpTp071Cxbi4+P11FNPacKECQoLC1OXLl30r3/9S0ePHtX111+vsLAwJSYmav369b5zjh8/rltvvVWdOnWSw+FQYmKi3nnnnWp9/hXJzMzU66+/rjlz5ujKK69U//799fbbb+vHH38s93mbgRCkCTti3SdJ2rRpu7mFAAAAAAAAAGj68vKksDBzWl5etUqcP3++hgwZorvvvltpaWlKS0tTXFycJOnhhx/W008/rW3btqlPnz7KyclRUlKSvvzyS23atEmjRo3S6NGjlZqaWuV7zJo1S2PHjtUPP/ygpKQk3XbbbTpx4kSlx0+YMEGHDx/W8uXL9dFHH+nVV19VRkaG3zFWq1UvvPCCtmzZojfeeENfffWVHn744TIff55eeOEFvfvuu1q6dKmWL1+um266ScnJyUpOTtZbb72lV199VR9++KHfec8//7yGDRumTZs26ZprrtH48eM1YcIE3X777dq4caO6deumCRMmyHM6aCooKNDAgQP12WefacuWLfrNb36j8ePHa+3atb5rzp49W2FhYVW2VatWSZI2bNggp9OpkSNH+s7v0KGDevfurTVr1lT5WTeEALMLQO1FhBzTCUlpR8myAAAAAAAAADR/kZGRCgwMlMPhUGxsrCRp+3bjj8SfeOIJjRgxwnds69at1bdvX9/zp556SkuWLNGnn36q++67r9L3mDhxom699VZJRhjw4osvat26dbrqqqvKHbt9+3Z9+eWX+u677zRo0CBJ0muvvabu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PPOM3nvvPR06dEiFhYUqLCz01SFJ0dHRio6u+axDWVlZuuaaa9SrVy/9+c9/9nvNYrGUO97j8VS4vy4RgjQT3bolGBseq46l5yqm45lTUwAAAAAAAADwctgdypmRc+YD6+m9z1bpL/El6aGHHtKyZcv03HPPqVu3bgoJCdGYMWNUVFRU5XXsdrvfc4vFIrfbXeGxlU3jVXr//v37lZSUpMmTJ+vJJ59UdHS0vvnmG02aNElOp7PK961OLaWP8QYKFe3znjdnzhw9//zzmjdvnm+dkmnTpvl9LrNnz9bs2bMrvDevzz//XBdffLHveXZ2tq666iqFhYVpyZIlfjXExsbqyJEj5a5x9OhRX0hTXwhBmon2XfpIIcel/Nbas+egYjr2MLskAAAAAAAAAE2IxWKp1pRUZgsMDPRbHLwyq1at0sSJE3XjjTdKknJycrRv3746reW8885TcXGxNm3apIEDB0qSdu3apVOnTvmOWb9+vYqLizVnzhxZrcYy3e+//36d1lETq1at0vXXX6/bb79dkhGO7Ny5Uz179vQdU9PpsLKysjRq1CgFBQXp008/VXBwsN+xQ4YMUWZmptatW6fBgwdLktauXavMzEwNHTq0rm6tQoQgzURIh86yhO6XJ7+1dv28X0MuJgQBAAAAAAAA0PzEx8dr7dq12rdvn8LCwiodpdGtWzd9/PHHGj16tCwWix577LFKj62t8847T1deeaV+85vfaMGCBbLb7fr973+vkJAQ3wiMrl27qri4WC+++KJGjx6t1atX65VXXqnTOmqiW7du+uijj7RmzRpFRUVp7ty5Sk9P9wtBajIdVnZ2tkaOHKm8vDy9/fbbysrKUlZWliSpbdu2stls6tmzp6666irdfffd+tvf/iZJ+s1vfqNrr71WPXrU73fZ1nq9OhqOw6FAx1FJ0t7dx0wuBgAAAAAAAADqx4MPPiibzaZevXqpbdu2la7x8fzzzysqKkpDhw7V6NGjNWrUKL+1O2orPj5eM2fO9D1/8803FRMTo0suuUQ33nij7r77boWHh/tGQ/Tr109z587Vs88+q969e2vRokV6+umnz7qO2nrsscc0YMAAjRo1SsOHD1dsbKxuuOGGWl9vw4YNWrt2rX788Ud169ZN7du397UDBw74jlu0aJESExM1cuRIjRw5Un369NFbb71VB3dUNUaCNCOO0AwVSjqYlm92KQAAAAAAAABQL84991x9++23fvsmTpxY7rj4+Hh99dVXfvvuvfdev+f79u2T2+32jVyoaI2P0lNb5efn68iRI7r00kt9+9q3b6/k5GTf84MHDyojI0PdunXz7XvggQf0wAMP+F13/PjxfvWXvYeZM2f6hS2StHDhwnL1l1X2HuLj4/32RUdH65NPPil3Xm0NHz680rVRSouOjtbbb79dZ+9bXYQgzUi447hOSko7ZjG7FAAAAAAAAABodlasWKHLL79cl112mW/fV199pZycHCUmJiotLU0PP/yw4uPjdckll5hYKbwIQZqRKMdJpUrKOBl8xmMBAAAAAAAAADVz1VVX6aqrrvLb53Q69cgjj2jPnj0KDw/X0KFDtWjRItntdpOqRGmEIM1Im7BMSdKJrHCTKwEAAAAAAACAlmHUqFEaNWqU2WWgEiyM3ozEhBtrgWRmR5tcCQAAAAAAAAAA5iMEaUbiWrkkSXm5rU2uBAAAAAAAAAAA8xGCNCOd2wZJkgpy25hcCQAAAAAAAAAA5iMEaUa6doqSJLny2qi42ORiAAAAAAAAAAAwGSFIM9LtnARJbknSsfRcc4sBAAAAAAAAAMBkhCDNSGzn3lLICUnS3r2HTK4GAAAAAAAAAABzEYI0I6Ed4mUJzZAk7d510ORqAAAAAAAAAAAwFyFIcxIersDQo5KkfbszTC4GAAAAAAAAAOre8OHDNW3atDq73h133KHbbrutzq7XXDmdTv3hD39QYmKiQkND1aFDB02YMEGHDx/2O66wsFBTp05VmzZtFBoaquuuu04HD5r3R/uEIM2JxSLH6ZEgBw7lm1wMAAAAAAAAAKC5yMvL08aNG/XYY49p48aN+vjjj/Xzzz/ruuuu8ztu2rRpWrJkid5991198803ysnJ0bXXXiuXy2VK3YQgzUy447gkKe2YxeRKAAAAAAAAAKBuTZw4UStWrND8+fNlsVhksVi0b98+bd26VUlJSQoLC1NMTIzGjx+vY8eO+c778MMPlZiYqJCQELVu3VpXXnmlcnNzNXPmTL355ptKTk6WzWaTxWLR8uXLK3zv7Oxs3XbbbQoNDVX79u31/PPPlxuV8vbbb2vQoEEKDw9XbGysxo0bp4yMkll7li9fLovFomXLlql///4KCQnR5ZdfroyMDH3++efq2bOnIiIidOuttyovL8933vDhwzV16lRNmzZNUVFRiomJ0auvvqrc3FzdcccdCg8PV9euXfX555/7znG5XJo0aZISEhIUEhKiHj16aP78+bX+7CMjI5WSkqKxY8eqR48euuiii/Tiiy9qw4YNSk1NlSRlZmbq9ddf15w5c3TllVeqf//+evvtt/Xjjz/qyy+/rPV7nw1CkGamVchJSdKRk8EmVwIAAAAAAACgKfF4pNxcc5rHU70a58+fryFDhujuu+9WWlqa0tLSZLfbdemll6pfv35av369li5dqiNHjmjs2LGSpLS0NN1666268847tW3bNi1fvlw33XSTPB6PHnzwQd1888264oordOjQIaWlpWno0KEVvvf06dO1evVqffrpp0pJSdGqVau0ceNGv2OKior05JNP6vvvv9cnn3yivXv3auLEieWuNXPmTL300ktas2aNDhw4oLFjx2revHlavHix/vOf/yglJUUvvvii3zlvvPGG2rRpo3Xr1mnq1Kn67W9/q5tvvllDhw7Vxo0bNWrUKI0fP94XnrjdbnXq1Envv/++tm7dqscff1yPPPKI3n//fd81Fy1apLCwsCrbokWLKv15ZGZmymKxqFWrVpKkDRs2yOl0auTIkb5jOnTooN69e2vNmjWV/2DrUYAp74p60ybslCTpRFaYuYUAAAAAAAAAaFLy8qQwk75WzMmRQkPPfFxkZKQCAwPlcDgUGxsrSXr88cc1YMAAzZ4923fcP/7xD8XFxennn39WTk6OiouLddNNN6lLly6SpMTERN+xISEhCgoKUmxsrKzWiscNZGdn64033tDixYt1xRVXSJL++c9/qkOHDn7H3Xnnnb7tc845Ry+88IIGDx6snJwchZX6cJ966ikNGzZMkjRp0iTNmDFDu3fv1jnnnCNJGjNmjL7++mv94Q9/8J3Tt29f/elPf5IkzZgxQ88884zatGmju+++2/c5LFiwQD/88IMuuugi2e12zZo1y3d+QkKC1qxZo/fff98XEF133XW68MILq/zMY2JiKtxfUFCgP/7xjxo3bpwiIiIkSenp6QoMDFRUVFS5a6Snp1f5PvWFEKSZiQ0z1gLJyo42uRIAAAAAAAAAqH8bNmzQ119/7RcyeO3evVsjR47UFVdcocTERI0aNUojR47UmDFjyn1RX5U9e/bI6XRq8ODBvn2RkZHq0aOH33GbNm3SzJkztXnzZp04cUJut1uSlJqaql69evmO69Onj287JiZGDofDF4B4961bt87v2qXPsdlsat26tV+Y4w0rSk+/9corr+i1117T/v37lZ+fr6KiIvXr18/3enh4uMLDw6v9OXg5nU796le/ktvt1ssvv3zG4z0ejywWc5ZwYDqsZqZTq2JJUm5Oa5MrAQAAAAAAANCUOBzGiAwzmsNR+7rdbrdGjx6tzZs3+7WdO3fqkksukc1mU0pKij7//HP16tVLL774onr06KG9e/dW+z08p+frKvtFvqfUPF65ubkaOXKkwsLC9Pbbb+u7777TkiVLJBnTZJVmt9t92xaLxe+5d583QKnonIrO89bmPe/999/XAw88oDvvvFNffPGFNm/erDvuuMOvltpMh+V0OjV27Fjt3btXKSkpvlEgkhQbG6uioiKdPHnS75yMjIxKR5TUN0aCNDOd2wRKkgpy25hcCQAAAAAAAICmxGKp3pRUZgsMDJTL5fI9HzBggD766CPFx8crIKDir7wtFouGDRumYcOG6fHHH1eXLl20ZMkSTZ8+vdz1KtK1a1fZ7XatW7dOcXFxkqSsrCzt3LlTl156qSRp+/btOnbsmJ555hnfMevXr6+LW66VVatWaejQoZoyZYpv3+7du/2Oqel0WN4AZOfOnfr666/VurX/H+MPHDhQdrvdt4C6ZKzJsmXLFv3lL38521uqlRqPBFm5cqVGjx6tDh06yGKx6JNPPqny+I8//lgjRoxQ27ZtFRERoSFDhmjZsmW1rRdncE6HVpIkV35rOZ3m1gIAAAAAAAAAdS0+Pl5r167Vvn37dOzYMd177706ceKEbr31Vq1bt0579uzRF198oTvvvFMul0tr167V7NmztX79eqWmpurjjz/W0aNH1bNnT9/1fvrpJ+3YsUPHjh2Ts4IvVsPDw/XrX/9aDz30kL7++mv99NNPuvPOO2W1Wn0jMDp37qzAwEC9+OKL2rNnjz799FM9+eSTDfrZlNatWzetX79ey5Yt088//6zHHntM3333nd8x4eHh6tatW5XNO11WcXGxxowZo/Xr12vRokVyuVxKT09Xenq6b3RJZGSkJk2apN///vf673//q02bNun2229XYmKirrzyygb/DKRahCC5ubnq27evXnrppWodv3LlSo0YMULJycnasGGDLrvsMo0ePVqbNm2qcbE4s24J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\n",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(20,5))\n",
    "plt.grid()\n",
    "plt.plot(range(1,181),cvresult1.iloc[:,0],c=\"red\",label=\"train,gamma=0\")\n",
    "plt.plot(range(1,181),cvresult1.iloc[:,2],c=\"orange\",label=\"test,gamma=0\")\n",
    "plt.plot(range(1,181),cvresult2.iloc[:,0],c=\"green\",label=\"train,gamma=20\")\n",
    "plt.plot(range(1,181),cvresult2.iloc[:,2],c=\"blue\",label=\"test,gamma=20\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 接下来给出XGBoost中其他控制过拟合的手段（剪枝）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "# 这是一个分类数据集的示例\n",
    "data2 = load_breast_cancer()\n",
    "\n",
    "x2 = data2.data\n",
    "y2 = data2.target\n",
    "\n",
    "dfull2 = xgb.DMatrix(x2,y2)\n",
    "\n",
    "param1 = {'obj':'binary:logistic', \"gamma\":0, \"nfold\":5\n",
    "          ,\"eval_metrics\":\"error\"\n",
    "         }\n",
    "param2 = {'obj':'binary:logistic', \"gamma\":1, \"nfold\":5}\n",
    "num_round = 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "00:00:187638\n"
     ]
    }
   ],
   "source": [
    "time0 = time()\n",
    "cvresult1 = xgb.cv(param1, dfull2, num_round, metrics=(\"error\"))\n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "00:00:267193\n"
     ]
    }
   ],
   "source": [
    "time0 = time()\n",
    "cvresult2 = xgb.cv(param2, dfull2, num_round, metrics=(\"error\")) \n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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VQoICFDVqlU1atSoPOFDQECAXn75ZQ0ePFienp6qX7++Nm7cqN9++029evWSp6enmjdvrgMHDliOuXDhggYOHKi6devKw8NDzZs31/vvv1/CPxHp0qVLWr58uebMmaNOnTqpVatWeuedd/Tdd9/l+75LG0EJAAAAAAAAAKD0mEzSlSvWf5hMRS5x/vz5Cg0N1YgRI5SYmKjExET5+/tLkp577jnNnDlTR48eVYsWLZSWlqaIiAh98cUXio+PV3h4uHr06KGEhIQbfsbUqVPVv39/ffvtt4qIiNAjjzyi33//vdD5gwcP1vnz57Vt2zatX79eS5cuVXJycp45Dg4OWrBggY4cOaJVq1bpq6++0vjx4/PMSU9P14IFC7RmzRp9/vnn2rZtmx566CHFxMQoJiZGb7/9tpYuXaoPP/wwz3Hz5s1T27ZtFR8fr27dumnQoEEaPHiwHn30UR06dEiNGjXS4MGDZfrze7527ZqCg4P16aef6siRI3r88cc1aNAg7d2713LOGTNmyNPT84aPnTt3SpIOHjwoo9GosLAwy/G1a9dWs2bNtHv37ht+1zfLqUzPDgAAAAAAAACwL+npkqen9T83LU2qVKlIUytXriwXFxd5eHjIz89PknTs2DFJ0rRp09S5c2fL3OrVq+vOO++0vH755Ze1YcMGbdq0Sf/3f/9X6GcMGTJEAwcOlGQODBYuXKh9+/apS5cu+eYeO3ZMX3zxhfbv36+QkBBJ0rJly3TbbbflmXf9niqBgYGaPn26nnzySc2cOdMybjQatXjxYjVs2FCS1K9fP7399tv69ddf5enpqaZNm+r+++/X1q1bNWDAAMtxEREReuKJJyRJL774ohYvXqy77rpLDz/8sCRp/PjxCg0N1a+//io/Pz/VqVNH48aNsxw/atQoff755/rggw90zz33SJIiIyPVv3//Qr8jSapTp44kKSkpSS4uLqpatWqe9319fZWUlHTDc9wsghIAAAAAAAAAAP6UG1TkunLliqZOnapPP/1U58+fV1ZWlq5evfq3d5S0aNHC8rxSpUry8vLKd4dIruPHj8vJyUmtW7e2jDVq1ChfaLB161bNmDFDP/zwg1JTU5WVlaVr167pypUr8vb2liR5eHhYQhLJHDQEBATI87rwytfXN18t19fr6+srSWrevHm+seTkZPn5+Sk7O1uzZs3S2rVr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DAaDtmzZopCQELm6umrnzp06efKkevXqJV9fX3l6euquu+7SF198ked8f116y2AwaNmyZerTp488PDx02223adOmTTesKTExUd26dZO7u7sCAwP13nvv5Tvv3Llz1bx5c1WqVEn+/v4aOXKk0tLSLO+vXLlSVapU0aeffqrGjRvLw8ND/fr105UrV7Rq1SoFBASoatWqGjVqlLKzs/PU//LLL2vw4MHy9PRU/fr1tXHjRv3222/q1auXPD091bx5cx04cMByzIULFzRw4EDVrVtXHh4eat68ud5///0i/xkUZMyYMZowYYLuvffemzpPcTlZ9dMAAAAAAAAAABVaujFdnjM9rf65aRPTVMmlUpHmzp8/XydOnFCzZs00bdo0SdL3338vSXruuec0e/ZsNWjQQFWqVNEvv/yiiIgIvfzyy3Jzc9OqVavUo0cPHT9+XPXq1Sv0M6ZOnapXX31Vr732mhYuXKhHHnlEZ86cUbVq1QqcP3jwYKWkpGjbtm1ydnZWVFSUkpOT88xxcHDQggULFBAQoFOnTmnkyJEaP368Zs6caZmTnp6uBQsWaM2aNbp8+bIeeughPfTQQ6pSpYpiYmL0888/q2/fvrrvvvs0YMAAy3Hz5s3TjBkz9MILL2jevHkaNGiQ2rZtq6FDh+q1117T+PHjNXjwYH3//fcyGAy6du2agoODNX78eHl7e+uzzz7ToEGD1KBBA91zzz2SpBkzZmjGjBk3/LPYvHmz2rVrd8M5ZY2gBAAAAAAAAABgVypXriwXFxd5eHjIz89PknTs2DFJ0rRp09S5c2fL3OrVq+vOO++0vH755Ze1YcMGbdq0Sf/3f/9X6GcMGTJEAwcOlGQODBYuXKh9+/apS5cu+eYeO3ZMX3zxhfbv36+QkBBJ0rJly3TbbbflmXf9niqBgYGaPn26nnzyyTxBidFo1OLFi9WwYUNJUr9+/fT222/r119/laenp5o2bar7779fW7duzROURERE6IknnpAkvfjii1q8eLHuuusuPfzww5Kk8ePHKzQ0VL/++qv8/PxUp04djRs3znL8qFGj9Pnnn+uDDz6wBCWRkZHq379/od+RJNWpU+eG71sDQQkAAAAAAAAAoNR4OHsobWLa308sg88tDblBRa4rV65o6tSp+vTTT3X+/HllZWXp6tWrSkhIuOF5WrRoYXleqVIleXl5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\n",
      "text/plain": [
       "<Figure size 2000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(20,5))\n",
    "plt.grid()\n",
    "plt.plot(range(1,101),cvresult1.iloc[:,0],c=\"red\",label=\"train,gamma=0\")\n",
    "plt.plot(range(1,101),cvresult1.iloc[:,2],c=\"orange\",label=\"test,gamma=0\")\n",
    "plt.plot(range(1,101),cvresult2.iloc[:,0],c=\"green\",label=\"train,gamma=1\")\n",
    "plt.plot(range(1,101),cvresult2.iloc[:,2],c=\"blue\",label=\"test,gamma=1\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "dfull = xgb.DMatrix(X,y)\n",
    "\n",
    "param1 = {'obj':'reg:squarederror' # 以下都是默认值\n",
    "          ,\"subsample\":1 \n",
    "          ,\"max_depth\":6\n",
    "          ,\"eta\":0.3\n",
    "          ,\"gamma\":0\n",
    "          ,\"lambda\":1\n",
    "          ,\"alpha\":0\n",
    "          ,\"colsample_bytree\":1\n",
    "          ,\"colsample_bylevel\":1\n",
    "          ,\"colsample_bynode\":1 # 以上三者都是列抽样，区别在于何时执行\n",
    "          #,\"min_child_weight\":1 # 要求结点上样本的权重(即二阶导数hi)之和必须大于min_child_weight\n",
    "          ,\"nfold\":5}\n",
    "num_round = 200"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "00:03:501750\n"
     ]
    },
    {
     "data": {
      "image/png": "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5XJOOeWUXHvttamtrc2ECRPW2f7zn/88J510UvfrsWPHplQqZcGCBbnqqqvy/e9/P1//+tfz1re+dZPqvfLKK3PmmWems7MzjY2NWb16df7whz/k3HPPzd///vdceumlgz7mT3/607zxjW/M6tWrkyRNTU1paWnJ7bffnttvvz3f//73c+211/Y79tTixYtz0EEH5eGHH05DQ0NGjRo14HP/8Y9/zFFHHZUlS5YkScaPH58nn3wyl156aX7yk5/k7LPPHvT19PSJT3wiH/vYx1JTU5MJEyZkxYoV+d3vfpdTTz01CxcuzPnnn7/ee4488sg888wzSZLa2tqMHz8+S5Ysydy5czN37txce+21ue6661JXV/yISE8sAAAAGCHe/OY356mnnsrhhx+eJPnc5z6Xp556qnu65ppr1tn/mmuuyZw5c3LFFVekubk5zz77bBYuXJjddtstSSWEefvb355f/OIXWbx4cVasWJFVq1Zl/vz5Oe+889Le3p53vetdWbBgwaBrffrpp/Pud78773nPe/Lkk09m6dKlefbZZ3PeeeclST772c/mT3/606CO+be//S2nnnpqVq9enZe//OX585//nKVLl2b58uX58pe/nIaGhvz85z/PhRde2O8xLr744rS2tub666/PypUr09zcnDvvvHOj525tbc0b3/jGLFmyJHvttVd+/etfZ/ny5Wlpacn111+flpaWfPzjHx/U9fT0hz/8If/2b/+WD3/4w3n66aezdOnSPPXUUznllFOSJBdddFF3eNbTEUccka985St55JFHsnr16ixdujQtLS258sorM3Xq1MyZMyef/exnN7muLan4MRsAAAD0Vi4nK1dWu4qhMXZsUipV5dQtLS358pe/nHe9613d66ZOndq9fOSRR/b56NuMGTPyX//1X1m+fHmuvPLKfOMb38jHPvaxQZ175cqVOfPMM/P5z3++e93EiRPzX//1X7n11ltz33335Yc//GE++tGPDviYn/rUp7JixYrsvPPOmTNnTndvq4aGhu5rfPe7352vfOUrueiii7ofaeyptbU1c+bMyb777tu9bo899tjoub/73e/mr3/9a8aMGZMbbrih+9g1NTU5/vjjc9111+UlL3nJgK+lt6VLl+bjH/94zj333DQ2NiZJpk2blm9961uZO3dunn766fz0pz/N2972tnXe1zu4TJJx48bl9NNPz8yZM3PkkUfmiiuuyD//8z9vcm1bip5YAAAAbH1WrkzGjx8ZUxXDuMmTJ+cd73jHJr//Na95TZLKuFab4qKLLtrgce+///4BH6tcLudHP/pRkuR973tfn48Lnnnmmdlpp53S2dmZH/7wh30e54QTTlgnwBqorrDoTW96U5/h2CGHHJKjjjpq0MftMnr06Lz3ve9db/2YMWNy3HHHJRnc55VUemk1NTVl/vz5eeKJJza5ti1FiAUAAADbqIMPPnijYyEtWbIkH//4x3P44Ydn8uTJqaur6x4o/vWvf32SbFIAst1222X33Xfvc9vOO++cJHn22WcHfLy///3vWbZsWZL0GxbV1NR09yy7++67+9znsMMOG/A5e+o63ste9rJ+99nQto3Ze++9M27cuD63bezz+uEPf5iTTz45u+66a8aMGdP951dTU9P9mW0NIZbHCQEAANj6jB2btLRUu4qh0c8A41vC9ttvv8Htf/rTn3L00Udn4cKF3esmTJjQHYSsWbMmzz77bFasWDHoc3c9EteX0aNHJ0na2toGfLynn366e3nXXXftd7+uwKfn/j1t7DPpz+LFi5Mk06dP73efDW3bmE35vNrb2/OmN70p1157bfe6hoaGTJkyJbW1tUkqn0NnZ+cm/RluaUIsAAAAtj6lUtJPrxQGrivI6M/b3/72LFy4MAceeGA+9alP5aUvfWnGjx/fvf0Xv/hFjjnmmJTL5eEudVBKmzHG2MY+k63JV77yle5vYrzkkkvy+te/vjvE67LLLrvkscceK9yfYV+EWAAAAMB6FixYkN///vepra3NT37yk+y0007r7dOzh1a19exB9cgjj2TSpEl97vf444+vt/9QmDx5cp544ok8+eST/e6zoW3D4Qc/+EGS5CMf+UjOP//89bZ3dHR09yDbGhgTCwAAAEaYmprKr/ub07vmscceS1IJe/oKsJLk5ptv3uTjD7XddtstEydOTJLccsstfe7T2dmZW2+9NUly4IEHDun5X/SiFyVJbr/99n732dC24dD1Z9hVW2+//vWvs3r16i1Z0mYRYgEAAMAI0zV+0tKlSzf5GE1NTUkqva0WLVq03vb77rsvV1111SYff6j1HGj+sssuy6pVq9bb5xvf+EYee+yx1NTU5JRTThnS83ed+/vf/37mz5+/3vY77rij33BtuHT9Gd53333rbWtvb8+//uu/btF6NpcQCwAAAEaYffbZJ0lyzTXXpLm5eZOOsffee2ennXZKuVzOm9/85jz88MNJKoOHX3PNNTn22GPXGR9rS5k9e3b3t+v19qEPfSjjxo3Lo48+mle96lX561//miRZs2ZNvvrVr+bcc89NkrzrXe/KzJkzh7Su0047LXvssUdWrVqV448/Pv/3f/+XpNIb7sYbb8zJJ5/cHSptKccee2yS5OMf/3iuu+66dHR0JEn+8pe/5KSTTsrvf//7fr/xsIiEWAAAADDC/NM//VPq6+vzq1/9KpMnT87OO++cmTNn5tRTTx3wMWpqavK5z30uNTU1ufXWW7PnnnumsbEx48ePzxve8IY0NDTksssuG76L2AS77757vvvd72b06NG55ZZbstdee2W77bbLhAkTctZZZ2X16tU59thjc+mllw75uUePHp0f/OAHmThxYh588MEcfvjhmTBhQsaNG5fjjz8+48ePz0c+8pEklW8I3BLe//73Z9asWWlubs7JJ5+cMWPGpKmpKXvvvXduuummfOlLX8qUKVO2SC1DQYgFAAAAI8w+++yTG2+8Mccee2wmTJiQJ598Mo888kieeuqpQR3nDW94Q26++eYcc8wxmTBhQtra2jJjxox84AMfyD333LPeN91tCV2Dox988MF9bj/ppJNy33335ayzzsrMmTOzcuXKjBkzJv/wD/+Qr3zlK7n++uszduzYYantgAMOyB/+8Ie8/e1vzw477JC2trbssMMOufDCC/P73/++e6yyrrG7htvkyZPz29/+NmeffXb3uGZjxozJySefnLlz5+aMM87YInUMlVJ5C3+HYnNzc5qamrJs2bLuZ3S3Fm1tbZkzZ05OPPHE1NfXV7scCkCboDdtgp60B3rTJuhNm6A3bWKt1atXZ968eZk1a1ZGjx5d7XKqorOzM83NzWlsbOwOP0ie//zn58EHH8z//u//5tWvfnW1yxmUt771rfnOd76Tj33sY5k9e/ag3781tInB/t0dTE5UzCsGAAAA6GXhwoV58MEHc+CBB251Adbf//73/OhHP0qydqwqBkeIBQAAAGwVbrvttiTJRz/60SpX0rfrrrsuH/rQh/LAAw+kra0tSdLa2prrrrsuRx99dFatWpVDDz00L33pS6tc6daprtoFAAAAAAzEG9/4xmzhUZEG5emnn84ll1ySSy65JDU1NZk4cWKam5vT3t6eJJkxY0a+853vVLnKrZeeWAAAAABD4JhjjsmHP/zhHHbYYdlhhx3S0tKSsWPH5sADD8zs2bNz7733Zvfdd692mVstPbEAAAAAhsDMmTPziU98otpljFh6YgEAAABQeEIsAAAAAApPiAUAAABA4QmxAAAAACg8IRYAAAAAhSfEAgAAAKDwhFgAAAAAFJ4QCwAAAIDCE2IBAAAAUHhCLAAAAAAKT4gFAAAAQOEJsQAAAIBt3pVXXplSqZQjjzxySI87e/bslEqlnHHGGUN63M1RKpVSKpUyf/78apcyKHXVLgAAAAAYWldeeWXmz5+fk08+OQcccEC1y8ns2bOTJBdccEEmTpxY1VrYegmxAAAAYIS58sorM3fu3MycObMQIdbFF1+cJDnjjDMKG2I1NTVlr732yq677jqkx50yZUr22muvTJ8+fUiPuy0SYgEAAADbvNe97nV53eteN+THPffcc3PuuecO+XG3RcbEAgAAAKDwhFgAAAAwQnQNTj537twkydvf/vbuQbz7GrS8paUln/70p3PIIYekqakpo0ePzp577pnzzjsvjz76aJ/nKJfL+fa3v51XvOIVmTJlSurr6zN16tTst99+OfPMM3P99dd373vGGWekVCp1v541a9Y69XSNlTVQra2t+cxnPpOXvOQlaWpqypgxY7LXXnvlwgsvzMKFCzf4mXRd+9VXX52jjjoqkydPTqlUyo9//OM+9+uto6Mjl112Wfbff/+MGTMmU6dOzWte85r89re/TdL/YOkbGti953sWLFiQs846KzvvvHMaGhoya9as/PM//3Oam5v7rGfJkiX59re/nTe96U15wQtekMbGxowbNy777LNPLrzwwjzxxBMb/Ty3Nh4nBAAAgBFizJgxmTZtWpYsWZK2trY0NjZmzJgx3dsnTZrUvfzggw/m+OOP7w5d6urq0tDQkIcffjiXX355vvOd7+SnP/1pXvrSl65zjjPOOCPf+ta3ul83NTVl2bJlefrpp3P//ffn3nvvzQknnNC9bdq0ad0B05QpU1JbW9v93vHjxw/42p5++um88pWvzD333JMkaWhoyKhRo/LXv/41f/3rX/PNb34z119/fV784hf3e4wLLrggn/vc51JTU5OmpqbU1Aysb09bW1te+9rXdgd0dXV1aWtry//+7//mhhtuyNVXXz3g6+jLH/7wh7zjHe/IkiVLMmHChHR2dmb+/Pn5z//8z9x+++25/fbbU19fv857PvWpT+XSSy/tft3Y2JjW1tb8+c9/zp///Od85zvfyc0335z9999/s2orEj2xAAAAYIR485vfnKeeeiqHH354kuRzn/tcnnrqqe7pmmuuSZI0NzfnhBNO6P4Gw7vvvjurVq1KS0tL5s2bl7e+9a1ZunRp3vCGN2Tp0qXdx7/99tvzrW99K7W1tbnsssvS3NycpUuXZvXq1XniiSfyzW9+M0cccUT3/l3n73LHHXesU88HPvCBAV/b2972ttxzzz3Zbrvt8v3vfz8rVqxIc3Nz7rjjjuy3335ZsmRJXve612XJkiV9vv+uu+7Kf/3Xf+Xiiy/OM888kyVLluTZZ5/t/qw25BOf+ESuv/761NXV5XOf+1yam5vz7LPPZv78+TnhhBPyjne8Y8DX0ZczzjgjBxxwQO677740NzenpaUlX/va19LQ0JDf/e53+drXvrbee3baaadcdNFFufvuu7N8+fIsW7Ysra2tueOOO3LMMcfk6aefzmmnnZZyubxZtRWJnlgAAABsfcrlpGNltasYGrVjkx6P3G0J//mf/5l58+blta99ba655pp1HvmbOXNmvvWtb+WZZ57JnDlz8tWvfrU7bOp6dO7YY4/Ne9/73u73lEqlTJ8+PW9729vytre9bcjrvf3223PDDTckqTz295rXvKZ728EHH5ybbrope++9d5544olcfvnl+ehHP7reMVpaWvLBD35wnW2NjY1pbGzc4LlbWlrymc98JknyyU9+Mueff373thkzZuRHP/pRXvziF3f3ENsUO+20U+bMmZOGhoYklV5m73jHO3L33XfnC1/4Qr7//e/n7LPPXuc973vf+9Y7Tm1tbQ4++OD87//+b170ohflgQceyG233ZaXv/zlm1xbkQixAAAA2Pp0rEy+P/BH0QrtTS1J3bgtesorr7wySSUIKfUToP3jP/5j5syZk5tvvrk7xJowYUKSyqN9nZ2dA34cb3P98Ic/TJLst99+6wRYXaZNm5azzz47l1xySb7//e/3GWLV1tbmwgsvHPS5f/7zn6elpSVjx47NOeecs972urq6vO9979us8O5973tfd4DV08knn5wvfOELuf/++wd1vNGjR+e4447LX/7yl/z6178WYgEAAABbn0cffbR70PY3vvGN/QZRa9asSZIsWLCge90rXvGK1NfX56677srRRx+dM888M0cffXR23HHHYa357rvvTpIcddRR/e5z9NFH55JLLsmf//znrF69OqNHj15n+x577JEpU6Zs8rkPPPDAjBvXd9j4spe9bNDH7emQQw7pc/3OO++cJHn22Wf73P6Xv/wll19+eW677bbMnz8/LS0t6z0+OJIGeBdiAQAAsPWpHVvpwTQS1I7doqd78sknu5effvrpje6/cuXaxzb33HPPXHHFFTn//PMzd+7c7m9BnDlzZl75ylfmrLPOykEHHTTkNXfVueuuu/a7T1fg09nZmWeeeSY77bTTOtu33377TTr34sWLkyTTp0/vd58NbRuI/h5p7Ari2tvb19v2ve99L29729vS1taWJN2D1Xf16GppacmKFSuyYsWKzaqtSAzsDgAAwNanVKo8gjcSpi08HlZnZ2f38rJly1Iulzc4dX17YZczzzwz8+bNy+c+97mcfPLJmTJlSubPn58vf/nLOfjgg/Nv//Zvw1Z7f48+DkTPb0UcaptT16Z4+umnc9ZZZ6WtrS1vfvObc+edd2b16tV59tlnuwfN7xozayQN7C7EAgAAgG3ItGnTupf/9Kc/bfIxzj///Fx77bVZtGhRfve73+X1r399kmT27NmbNch5X7p6UT3yyCP97vP4448nqfRImjx58pCdu+tYPXuw9balH9m7/vrr09LSkn322SdXXXVVDjrooNTX16+zz8KFC7doTVuCEAsAAABGmK5xrvrqhTNr1qzuIOuaa67Z7HOVSqW8+MUvzve///3MmDEj5XI5t99++3r79FfPQBx44IFJkltvvbXffX75y18mSfbee+/1xsPaHC960YuSVMbG6u/RvN7XO9y6Arv999+/zzHNyuVy9+cxkgixAAAAYITpGmNp6dKlfW4/44wzkiRXXHFF/vznP/d7nHK5vM4xugZ770ttbW1GjRqVJGltbR1UPRtzyimnJEn++Mc/5qc//el62xctWpQvfelLSZI3velNm3SO/rzyla/MuHHjsnLlylx++eXrbW9vb89nP/vZIT3nxjQ1NSVJ7r///j6Dwa985Sv529/+tkVr2hKEWAAAADDC7LPPPkkqPa2am5vX237RRRdlt912y4oVK/Lyl7883/zmN9PSsnag/Pnz5+dLX/pSDjzwwPzwhz/sXv+hD30ob3jDG3LttdfmmWee6V6/aNGiXHjhhXnooYdSKpVy7LHH9lnPt7/97XR0dPRZ8/z581MqlVIqlXLllVeus+1lL3tZjj/++CTJ6aefnh/96Efdx7n77rtz3HHHZcmSJZk+fXrOPffcgX5MAzJhwoRccMEFSZJ//dd/zec///msWrUqSeWbG0855ZTMmzdvSM+5MUcffXRKpVLuv//+nH/++d3hYHNzc/7jP/4j55xzzpA+UlkUQiwAAAAYYf7pn/4p9fX1+dWvfpXJkydn5513zsyZM3PqqacmSSZOnJgbb7wxe++9d55++umcccYZaWpqyuTJkzN27NjMmjUr73nPe3LvvfeuM2h5e3t7rrnmmrz+9a/PlClT0tjYmMbGxkybNq27N9Ls2bNzwAEHrFPPO97xjiTJZz/72UyYMCEzZszIzJkzc9lllw34mr71rW/lgAMOyJIlS3LKKadk/PjxaWpqykEHHZQ//OEPmTRpUn784x9n0qRJm/fh9eGjH/1ojjvuuLS3t+f8889PU1NTJk2alBkzZmTOnDn5+te/3r1v17cDDqfnP//5Oe+885Ikl19+ebbbbrtMmjQpkyZNyr/8y7/kFa94Rc4+++xhr2NLE2IBAADACLPPPvvkxhtvzLHHHpsJEybkySefzCOPPJKnnnqqe5899tgj99xzT6644oocddRRmTRpUpqbm1NXV5f9998/5513Xm699da8/e1v737P+973vnz+85/PySefnL322itJ5dHBXXbZJW9605ty66235qMf/eh69Zx55pn50pe+lIMOOig1NTVZsGBBHnnkkXUeL+waOL1UKuWggw5a7xjbb799/u///i+XXnppDj744NTX16e1tTV77rlnLrjggjzwwAN58YtfPFQf4TpGjRqVn/3sZ7n00kuz7777pqamJrW1tTnppJNy22235aijjured+LEicNSQ2+f+9zn8qUvfSkHHHBAGhoa0t7engMOOCCXXXZZfvazn6Wurm6L1LEllcpb+LsWm5ub09TUlGXLlnU/E7u1aGtry5w5c3LiiSeuN+o/2yZtgt60CXrSHuhNm6A3bYLetIm1Vq9enXnz5mXWrFlDOkj31qSzszPNzc1pbGzsc/DukebTn/50PvjBD+YNb3jDOo8wbg1+8Ytf5JhjjsmMGTMyf/78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J8QCAAAAoPCEWAAAAAAUnhALAAAAgMITYgEAAABQeEIsAAAAAApPiAUAAABA4QmxAAAAACi8TQqxrrjiisyaNSujR4/OQQcdlNtvv32o6wIAAACAboMOsa6++upccMEF+fCHP5x77rknL3vZy3LCCSdkwYIFw1EfAAAAAAw+xPrMZz6Td77znTnzzDOz995757LLLssuu+ySL37xi8NRHwAAAACkbjA7r1mzJnfddVcuuuiiddYfd9xx+c1vftPne1pbW9Pa2tr9etmyZUmSJUuWpK2tbbD1VlVbW1tWrlyZZ555JvX19dUuhwLQJuhNm6An7YHetAl60yboTZugJ+2B3kZim1i+fHmSpFwub3TfQYVYixcvTkdHR6ZNm7bO+mnTpuWpp57q8z2XXHJJLr744vXWz5o1azCnBgAAAGCEWr58eZqamja4z6BCrC6lUmmd1+Vyeb11XT74wQ/mwgsv7H7d2dmZJUuWZPLkyf2+p6iam5uzyy675NFHH01jY2O1y6EAtAl60yboSXugN22C3rQJetMm6El7oLeR2CbK5XKWL1+eHXfccaP7DirEmjJlSmpra9frdbVo0aL1emd1aWhoSENDwzrrJk6cOJjTFk5jY+OIaSwMDW2C3rQJetIe6E2boDdtgt60CXrSHuhtpLWJjfXA6jKogd1HjRqVgw46KDfddNM662+66aYcfvjhgzkUAAAAAAzYoB8nvPDCC/PWt741Bx98cA477LD893//dxYsWJCzzz57OOoDAAAAgMGHWG9+85vzzDPP5N/+7d/y5JNPZt99982cOXMyY8aM4aivUBoaGvKxj31svccj2XZpE/SmTdCT9kBv2gS9aRP0pk3Qk/ZAb9t6myiVB/IdhgAAAABQRYMaEwsAAAAAqkGIBQAAAEDhCbEAAAAAKDwhFgAAAACFJ8QahCuuuCKzZs3K6NGjc9BBB+X222+vdklsAZdcckkOOeSQTJgwIVOnTs3JJ5+cBx98cJ19zjjjjJRKpXWmQw89tEoVM9xmz5693p/3Djvs0L29XC5n9uzZ2XHHHTNmzJgceeSReeCBB6pYMcNt5syZ67WJUqmUc845J4l7xEh322235aSTTsqOO+6YUqmUH//4x+tsH8g9obW1Needd16mTJmScePG5TWveU0ee+yxLXgVDKUNtYm2trb8v//3/7Lffvtl3Lhx2XHHHfO2t70tTzzxxDrHOPLII9e7b5x66qlb+EoYKhu7Twzk54T7xMiysTbR178rSqVS/uM//qN7H/eJkWMgv3P690SFEGuArr766lxwwQX58Ic/nHvuuScve9nLcsIJJ2TBggXVLo1hNnfu3Jxzzjn57W9/m5tuuint7e057rjjsmLFinX2O/744/Pkk092T3PmzKlSxWwJL3jBC9b5877vvvu6t/37v/97PvOZz+Tyyy/PHXfckR122CHHHntsli9fXsWKGU533HHHOu3hpptuSpK88Y1v7N7HPWLkWrFiRV74whfm8ssv73P7QO4JF1xwQa699tp873vfy69+9au0tLTk1a9+dTo6OrbUZTCENtQmVq5cmbvvvjsf+chHcvfdd+eaa67JX//617zmNa9Zb9+zzjprnfvGl7/85S1RPsNgY/eJZOM/J9wnRpaNtYmebeHJJ5/M17/+9ZRKpbzhDW9YZz/3iZFhIL9z+vfEc8oMyItf/OLy2Wefvc665z//+eWLLrqoShVRLYsWLSonKc+dO7d73emnn15+7WtfW72i2KI+9rGPlV/4whf2ua2zs7O8ww47lD/96U93r1u9enW5qamp/KUvfWkLVUi1vfe97y3vvvvu5c7OznK57B6xLUlSvvbaa7tfD+SesHTp0nJ9fX35e9/7Xvc+jz/+eLmmpqZ8ww03bLHaGR6920Rffv/735eTlB955JHudS9/+cvL733ve4e3OKqirzaxsZ8T7hMj20DuE6997WvLRx999Drr3CdGrt6/c/r3xFp6Yg3AmjVrctddd+W4445bZ/1xxx2X3/zmN1WqimpZtmxZkmTSpEnrrL/11lszderUPO95z8tZZ52VRYsWVaM8tpCHHnooO+64Y2bNmpVTTz01f//735Mk8+bNy1NPPbXO/aKhoSEvf/nL3S+2EWvWrMl3vvOdvOMd70ipVOpe7x6xbRrIPeGuu+5KW1vbOvvsuOOO2Xfffd03thHLli1LqVTKxIkT11n/P//zP5kyZUpe8IIX5AMf+IAevSPchn5OuE9s2xYuXJif/exneec737neNveJkan375z+PbFWXbUL2BosXrw4HR0dmTZt2jrrp02blqeeeqpKVVEN5XI5F154Yf7hH/4h++67b/f6E044IW984xszY8aMzJs3Lx/5yEdy9NFH56677kpDQ0MVK2Y4vOQlL8m3vvWtPO95z8vChQvziU98IocffngeeOCB7ntCX/eLRx55pBrlsoX9+Mc/ztKlS3PGGWd0r3OP2HYN5J7w1FNPZdSoUdluu+3W28e/M0a+1atX56KLLsppp52WxsbG7vVvectbMmvWrOywww65//7788EPfjB/+MMfuh9XZmTZ2M8J94lt2ze/+c1MmDAhr3/969dZ7z4xMvX1O6d/T6wlxBqEnv+jnlQaV+91jGznnntu/vjHP+ZXv/rVOuvf/OY3dy/vu+++OfjggzNjxoz87Gc/W++HDVu/E044oXt5v/32y2GHHZbdd9893/zmN7sHYXW/2HZ97WtfywknnJAdd9yxe517BJtyT3DfGPna2tpy6qmnprOzM1dcccU6284666zu5X333Td77rlnDj744Nx999058MADt3SpDLNN/TnhPrFt+PrXv563vOUtGT169Drr3SdGpv5+50z8eyIxsPuATJkyJbW1teull4sWLVovCWXkOu+88/KTn/wkt9xyS3beeecN7jt9+vTMmDEjDz300BaqjmoaN25c9ttvvzz00EPd31LofrFteuSRR3LzzTfnzDPP3OB+7hHbjoHcE3bYYYesWbMmzz77bL/7MPK0tbXlTW96U+bNm5ebbrppnV5YfTnwwANTX1/vvrGN6P1zwn1i23X77bfnwQcf3Oi/LRL3iZGgv985/XtiLSHWAIwaNSoHHXTQet0yb7rpphx++OFVqootpVwu59xzz80111yTX/7yl5k1a9ZG3/PMM8/k0UcfzfTp07dAhVRba2tr/vznP2f69OndXbp73i/WrFmTuXPnul9sA77xjW9k6tSpedWrXrXB/dwjth0DuSccdNBBqa+vX2efJ598Mvfff7/7xgjVFWA99NBDufnmmzN58uSNvueBBx5IW1ub+8Y2ovfPCfeJbdfXvva1HHTQQXnhC1+40X3dJ7ZeG/ud078n1vI44QBdeOGFeetb35qDDz44hx12WP77v/87CxYsyNlnn13t0hhm55xzTq666qpcd911mTBhQnf63dTUlDFjxqSlpSWzZ8/OG97whkyfPj3z58/Phz70oUyZMiWve93rqlw9w+EDH/hATjrppOy6665ZtGhRPvGJT6S5uTmnn356SqVSLrjggnzqU5/KnnvumT333DOf+tSnMnbs2Jx22mnVLp1h1NnZmW984xs5/fTTU1e39sere8TI19LSkocffrj79bx583Lvvfdm0qRJ2XXXXTd6T2hqaso73/nOvP/978/kyZMzadKkfOADH8h+++2XY445plqXxWbYUJvYcccdc8opp+Tuu+/OT3/603R0dHT/22LSpEkZNWpU/va3v+V//ud/cuKJJ2bKlCn505/+lPe///150YtelJe+9KXVuiw2w4baxKRJkzb6c8J9YuTZ2M+OJGlubs4PfvCDXHrppeu9331iZNnY75wD+R1jm7lPVOlbEbdKX/jCF8ozZswojxo1qnzggQd2f90lI1uSPqdvfOMb5XK5XF65cmX5uOOOK2+//fbl+vr68q677lo+/fTTywsWLKhu4QybN7/5zeXp06eX6+vryzvuuGP59a9/ffmBBx7o3t7Z2Vn+2Mc+Vt5hhx3KDQ0N5SOOOKJ83333VbFitoQbb7yxnKT84IMPrrPePWLku+WWW/r8OXH66aeXy+WB3RNWrVpVPvfcc8uTJk0qjxkzpvzqV79aG9mKbahNzJs3r99/W9xyyy3lcrlcXrBgQfmII44oT5o0qTxq1Kjy7rvvXj7//PPLzzzzTHUvjE22oTYx0J8T7hMjy8Z+dpTL5fKXv/zl8pgxY8pLly5d7/3uEyPLxn7nLJf9e6JLqVwul4cxIwMAAACAzWZMLAAAAAAKT4gFAAAAQOEJsQAAAAAoPCEWAAAAAIUnxAIAAACg8IRYAAAAABSeEAsAAACAwhNiAQAAAFB4QiwAAAAACk+IBQAAAEDhCbEAAAAAKDwhFgAAAACF9/8D0lsiQh9d1j4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1500x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "time0 = time()\n",
    "cvresult1 = xgb.cv(param1, dfull, num_round)\n",
    "print(datetime.datetime.fromtimestamp(time()-time0).strftime(\"%M:%S:%f\"))\n",
    "\n",
    "fig,ax = plt.subplots(1,figsize=(15,8))\n",
    "ax.set_ylim(top=5)\n",
    "ax.grid()\n",
    "ax.plot(range(1,201),cvresult1.iloc[:,0],c=\"red\",label=\"train,original\")\n",
    "ax.plot(range(1,201),cvresult1.iloc[:,2],c=\"orange\",label=\"test,original\")\n",
    "ax.legend(fontsize=\"xx-large\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 模型参数的保存与读取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "dtrain = xgb.DMatrix(Xtrain,Ytrain)\n",
    "\n",
    "#设定参数，对模型进行训练\n",
    "param = {'obj':'reg:squarederror'\n",
    "          ,\"subsample\":1\n",
    "          ,\"eta\":0.05\n",
    "          ,\"gamma\":20\n",
    "          ,\"lambda\":3.5\n",
    "          ,\"alpha\":0.2\n",
    "          ,\"max_depth\":4\n",
    "          ,\"colsample_bytree\":0.4\n",
    "          ,\"colsample_bylevel\":0.6\n",
    "          ,\"colsample_bynode\":1}\n",
    "num_round = 180\n",
    "\n",
    "bst = xgb.train(param, dtrain, num_round)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "#保存模型\n",
    "pickle.dump(bst, open(\"xgboost_model.dat\",\"wb\"))\n",
    "\n",
    "#注意，open中我们往往使用w或者r作为读取的模式，但其实w与r只能用于文本文件 - txt\n",
    "#当我们希望导入的不是文本文件，而是模型本身的时候，我们使用\"wb\"和\"rb\"作为读取的模式\n",
    "#其中wb表示以二进制写入，rb表示以二进制读入，使用open进行保存的这个文件中是一个可以进行读取或者调用的模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 读取已经保存的模型\n",
    "from sklearn.datasets import fetch_california_housing\n",
    "from sklearn.model_selection import train_test_split as TTS\n",
    "from sklearn.metrics import mean_squared_error as MSE\n",
    "import pickle\n",
    "import xgboost as xgb\n",
    "\n",
    "data = fetch_california_housing()\n",
    "\n",
    "X = data.data\n",
    "y = data.target\n",
    "\n",
    "Xtrain, Xtest, Ytrain, Ytest = TTS(X,y,test_size=0.3,random_state=420)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "#注意，如果我们保存的模型是xgboost库中建立的模型，则导入的数据类型也必须是xgboost库中的数据类型\n",
    "dtest = xgb.DMatrix(Xtest, Ytest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入模型\n",
    "loaded_model = pickle.load(open(\"xgboost_model.dat\", \"rb\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 做预测，直接调用接口predict\n",
    "ypreds = loaded_model.predict(dtest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(6192,)"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ypreds.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.3582998331689637"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error as MSE, r2_score\n",
    "MSE(Ytest, ypreds)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7329912105183207"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r2_score(Ytest,ypreds)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用joblib存取模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['xgboost-model-joblib.dat']"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import joblib\n",
    "\n",
    "bst = xgb.train(param, dtrain, num_round)\n",
    "\n",
    "joblib.dump(bst, \"xgboost-model-joblib.dat\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "loaded_model = joblib.load(\"xgboost-model-joblib.dat\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "dtest = xgb.DMatrix(Xtest, Ytest)\n",
    "ypreds = loaded_model.predict(dtest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(6192,)"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ypreds.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "#使用sklearn中的模型\n",
    "from xgboost import XGBRegressor as XGBR\n",
    "\n",
    "bst = XGBR(n_estimators=200\n",
    "           ,eta=0.05\n",
    "           ,gamma=20\n",
    "           ,reg_lambda=3.5\n",
    "           ,reg_alpha=0.2\n",
    "           ,max_depth=4\n",
    "           ,colsample_bytree=0.4\n",
    "           ,colsample_bylevel=0.6).fit(Xtrain,Ytrain) # 训练完毕"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['xgboost-skmodel-joblib.dat']"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joblib.dump(bst, \"xgboost-skmodel-joblib.dat\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "loaded_model = joblib.load(\"xgboost-skmodel-joblib.dat\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 直接调用predict\n",
    "# 注意这里使用的是sklearn接口，输入类型不能是DMatrix\n",
    "ypreds = loaded_model.predict(Xtest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用XGBoost分类（样本不平衡）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import xgboost as xgb\n",
    "import matplotlib.pyplot as plt\n",
    "from xgboost import XGBClassifier as XGBC\n",
    "from sklearn.datasets import make_blobs # 自建数据集\n",
    "from sklearn.model_selection import train_test_split as TTS\n",
    "from sklearn.metrics import confusion_matrix as cm, recall_score as recall, roc_auc_score as auc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "class_1 = 500 #类别0有500个样本\n",
    "class_2 = 50 #类别1只有50个\n",
    "centers = [[0.0, 0.0], [2.0, 2.0]] # 设定两个类别的样本中心\n",
    "clusters_std = [1.5, 0.5] # 设定两个类别的样本方差，通常来说，样本量比较大的类别会更加松散\n",
    "X, y  = make_blobs(n_samples=[class_1, class_2],\n",
    "                  centers=centers,\n",
    "                  cluster_std=clusters_std,\n",
    "                  random_state=0, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(550, 2)"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.09090909090909091"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(y == 1).sum() / y.shape[0] # 类别1占9%"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain, Xtest, Ytrain, Ytest = TTS(X,y,test_size=0.3,random_state=420)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf = XGBC().fit(Xtrain, Ytrain)\n",
    "ypred = clf.predict(Xtest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,\n",
       "       1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1])"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ypred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9272727272727272"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf.score(Xtest, Ytest) #默认模型评估指标 - 准确率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  9,   4],\n",
       "       [  8, 144]], dtype=int64)"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cm(Ytest, ypred, labels=[1, 0]) # 混淆矩阵 \n",
    "# 注意 cm默认0是正例，所有这里要用labels。而recall和其他默认1是正例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6923076923076923"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall(Ytest, ypred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9701417004048585"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "auc(Ytest, clf.predict_proba(Xtest)[:,1]) # 计算类别1的AUC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9333333333333333"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# scale_pos_weight一般设为多数样本数量/少数样本数量\n",
    "clf_ = XGBC(scale_pos_weight=10).fit(Xtrain,Ytrain)\n",
    "ypred_ = clf_.predict(Xtest)\n",
    "clf_.score(Xtest, Ytest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 10,   3],\n",
       "       [  8, 144]], dtype=int64)"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cm(Ytest,ypred_, labels=[1, 0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7692307692307693\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9696356275303644"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "print(recall(Ytest, ypred_))\n",
    "\n",
    "auc(Ytest,clf_.predict_proba(Xtest)[:,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用xgboost库 参数：scale_pos_weight\n",
    "\n",
    "dtrain = xgb.DMatrix(Xtrain,Ytrain)\n",
    "dtest = xgb.DMatrix(Xtest,Ytest)\n",
    "\n",
    "param = {'objective':'binary:logistic',\"eta\":0.1,\"scale_pos_weight\":1}\n",
    "num_round = 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [],
   "source": [
    "bst = xgb.train(param, dtrain, num_round)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.00110357, 0.00761518, 0.00110357, 0.00110357, 0.93531454,\n",
       "       0.00466839, 0.00110357, 0.00110357, 0.00110357, 0.00110357,\n",
       "       0.00110357, 0.00410493, 0.00454478, 0.00571528, 0.00751026,\n",
       "       0.00110357, 0.00110357, 0.00110357, 0.00110357, 0.00110357,\n",
       "       0.00110357, 0.00110357, 0.00110357, 0.00110357, 0.00110357,\n",
       "       0.00712637, 0.00110357, 0.00110357, 0.00110357, 0.00110357,\n",
       "       0.00110357, 0.00110357, 0.00110357, 0.00793251, 0.00466839,\n",
       "       0.00110357, 0.00339395, 0.00657186, 0.00110357, 0.00457053,\n",
       "       0.00571528, 0.0026763 , 0.00110357, 0.00110357, 0.00110357,\n",
       "       0.00884932, 0.00712637, 0.00110357, 0.00712637, 0.00466839,\n",
       "       0.00110357, 0.00110357, 0.00712637, 0.00110357, 0.00110357,\n",
       "       0.00110357, 0.00110357, 0.63748044, 0.00110357, 0.00793251,\n",
       "       0.00110357, 0.00451971, 0.00644181, 0.00110357, 0.00110357,\n",
       "       0.00110357, 0.00110357, 0.00751026, 0.00712637, 0.00110357,\n",
       "       0.00866458, 0.00110357, 0.00110357, 0.00110357, 0.91610426,\n",
       "       0.00110357, 0.00110357, 0.89246494, 0.0026763 , 0.00501714,\n",
       "       0.00761518, 0.00884932, 0.00339395, 0.00110357, 0.93531454,\n",
       "       0.00110357, 0.00110357, 0.00110357, 0.82530665, 0.00751026,\n",
       "       0.00110357, 0.35174078, 0.00110357, 0.00110357, 0.70393246,\n",
       "       0.00110357, 0.76804197, 0.00110357, 0.00110357, 0.00110357,\n",
       "       0.00110357, 0.96656513, 0.00110357, 0.00571528, 0.25400913,\n",
       "       0.00110357, 0.00110357, 0.00110357, 0.00110357, 0.00457053,\n",
       "       0.00110357, 0.00110357, 0.00110357, 0.89246494, 0.00110357,\n",
       "       0.9518535 , 0.0026763 , 0.00712637, 0.00110357, 0.00501714,\n",
       "       0.00110357, 0.00110357, 0.00571528, 0.00110357, 0.00110357,\n",
       "       0.00712637, 0.00110357, 0.00110357, 0.00712637, 0.00110357,\n",
       "       0.25136763, 0.00110357, 0.00110357, 0.00110357, 0.00110357,\n",
       "       0.00110357, 0.8904051 , 0.3876418 , 0.00110357, 0.00457053,\n",
       "       0.00657186, 0.9366597 , 0.00866458, 0.00110357, 0.00501714,\n",
       "       0.00501714, 0.00110357, 0.00110357, 0.00368543, 0.00501714,\n",
       "       0.9830577 , 0.00110357, 0.00644181, 0.00110357, 0.00571528,\n",
       "       0.00110357, 0.00110357, 0.00110357, 0.00110357, 0.00466839,\n",
       "       0.00110357, 0.00110357, 0.92388713, 0.90231985, 0.80084217],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "preds = bst.predict(dtest)\n",
    "preds # 和sklearn不同的是，这里记录的是为类别1的概率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 1., 0., 0., 1., 0., 0., 0., 0., 0., 0., 1.,\n",
       "       0., 0., 0., 1., 0., 0., 0., 0., 0., 1., 0., 1., 0., 0., 0., 0., 1.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 1., 0., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
       "       1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0.,\n",
       "       0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1.], dtype=float32)"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#自己设定阈值\n",
    "ypred = preds.copy()\n",
    "ypred[preds > 0.5] = 1\n",
    "ypred[preds <= 0.5] = 0\n",
    "ypred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [],
   "source": [
    "#写明参数\n",
    "scale_pos_weight = [1,5,10]\n",
    "names = [\"negative vs positive: 1\"\n",
    "         ,\"negative vs positive: 5\"\n",
    "         ,\"negative vs positive: 10\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('negative vs positive: 1', 1),\n",
       " ('negative vs positive: 5', 5),\n",
       " ('negative vs positive: 10', 10)]"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(zip(names,scale_pos_weight))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "negative vs positive: 1\n",
      "\tAccuracy:0.9272727272727272\n",
      "\tRecall:0.6923076923076923\n",
      "\tAUC:0.9741902834008097\n",
      "negative vs positive: 5\n",
      "\tAccuracy:0.9393939393939394\n",
      "\tRecall:0.8461538461538461\n",
      "\tAUC:0.9635627530364372\n",
      "negative vs positive: 10\n",
      "\tAccuracy:0.9515151515151515\n",
      "\tRecall:1.0\n",
      "\tAUC:0.9665991902834008\n"
     ]
    }
   ],
   "source": [
    "#导入模型评估指标\n",
    "from sklearn.metrics import accuracy_score as accuracy, recall_score as recall, roc_auc_score as auc\n",
    "\n",
    "for name, i in zip(names,scale_pos_weight):\n",
    "    param = {'objective':'binary:logistic'\n",
    "            ,\"eta\":0.1,\"scale_pos_weight\":i}\n",
    "    num_round = 100\n",
    "    clf = xgb.train(param, dtrain, num_round)\n",
    "    preds = clf.predict(dtest)\n",
    "    ypred = preds.copy()\n",
    "    ypred[preds > 0.5] = 1\n",
    "    ypred[ypred != 1] = 0\n",
    "    print(name)\n",
    "    print(\"\\tAccuracy:{}\".format(accuracy(Ytest, ypred)))\n",
    "    print(\"\\tRecall:{}\".format(recall(Ytest, ypred)))\n",
    "    print(\"\\tAUC:{}\".format(auc(Ytest, preds)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "torch1.8",
   "language": "python",
   "name": "torch1.8"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
